/* Do not modify this file.                                                   */
/* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
/* packet-gsm_map.c                                                           */
/* ../../tools/asn2wrs.py -b -e -c ./gsm_map.cnf -s ./packet-gsm_map-template -D . ../ros/Remote-Operations-Information-Objects.asn MobileDomainDefinitions.asn MAP-ApplicationContexts.asn MAP-SS-Code.asn MAP-BS-Code.asn MAP-TS-Code.asn MAP-ExtensionDataTypes.asn MAP-CommonDataTypes.asn MAP-SS-DataTypes.asn MAP-ER-DataTypes.asn MAP-SM-DataTypes.asn MAP-OM-DataTypes.asn MAP-MS-DataTypes.asn MAP-CH-DataTypes.asn MAP-LCS-DataTypes.asn MAP-GR-DataTypes.asn MAP-DialogueInformation.asn MAP-LocationServiceOperations.asn MAP-Group-Call-Operations.asn MAP-ShortMessageServiceOperations.asn MAP-SupplementaryServiceOperations.asn MAP-CallHandlingOperations.asn MAP-OperationAndMaintenanceOperations.asn MAP-MobileServiceOperations.asn MAP-Errors.asn MAP-Protocol.asn GSMMAP.asn SS-DataTypes.asn SS-Operations.asn */

/* Input file: packet-gsm_map-template.c */

#line 1 "../../asn1/gsm_map/packet-gsm_map-template.c"
/* XXX see bug 1852:
 *
 * packet-gsm_map.c: There are 1174 display filter fields registered.  Most are
 * prefixed appropriately as "gsm_map", but many others are prefixed as
 * "gsm_old", or even "gad", "gsm_ss", or with no prefix at all.  I don't know
 * if the ones with "gsm_old" are simply obsolete display filter fields or if
 * they should be prefixed as "gsm_map.old." or what.  Similar uncertainties
 * for the others. Someone more knowledgeable than I am with respect to this
 * dissector should provide a patch for it.
 */

/* packet-gsm_map-template.c
 * Routines for GSM MobileApplication packet dissection
 * including GSM SS.
 * Copyright 2004 - 2010 , Anders Broman <anders.broman [AT] ericsson.com>
 * Based on the dissector by:
 * Felix Fei <felix.fei [AT] utstar.com>
 * and Michael Lum <mlum [AT] telostech.com>
 *
 * $Id: packet-gsm_map.c 37586 2011-06-07 06:20:37Z etxrab $
 *
 * Wireshark - Network traffic analyzer
 * By Gerald Combs <gerald@wireshark.org>
 * Copyright 1998 Gerald Combs
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 * References GSM MAP:
 * ETSI TS 129 002
 * Updated to ETSI TS 129 002 V7.5.0 (3GPP TS 29.002 V7.5.0 (2006-09) Release 7)
 * Updated to ETSI TS 129 002 V8.4.0 (3GPP TS 29.002 V8.1.0 (2007-06) Release 8)
 * References GSM SS
 * References: 3GPP TS 24.080
 */

#ifdef HAVE_CONFIG_H
# include "config.h"
#endif

#include <glib.h>
#include <epan/packet.h>
#include <epan/prefs.h>
#include <epan/tap.h>
#include <epan/emem.h>
#include <epan/oids.h>
#include <epan/expert.h>

#include <string.h>

#include <epan/asn1.h>
#include "packet-ber.h"
#include "packet-per.h"
#include "packet-q931.h"
#include "packet-gsm_map.h"
#include "packet-gsm_a_common.h"
#include "packet-tcap.h"
#include "packet-e164.h"
#include "packet-e212.h"
#include "packet-smpp.h"
#include "packet-gsm_sms.h"
#include "packet-ranap.h"

#define PNAME  "GSM Mobile Application"
#define PSNAME "GSM_MAP"
#define PFNAME "gsm_map"

/* Initialize the protocol and registered fields */
static int proto_gsm_map = -1;
static int proto_gsm_map_dialogue = -1;

static int hf_gsm_map_old_Component_PDU = -1;
static int hf_gsm_map_getPassword = -1;
static int hf_gsm_map_currentPassword = -1;
static int hf_gsm_map_extension = -1;
static int hf_gsm_map_nature_of_number = -1;
static int hf_gsm_map_number_plan = -1;
static int hf_gsm_map_isdn_address_digits = -1;
static int hf_gsm_map_address_digits = -1;
static int hf_gsm_map_servicecentreaddress_digits = -1;
static int hf_gsm_map_imsi_digits = -1;
static int hf_gsm_map_TBCD_digits = -1;
static int hf_gsm_map_Ss_Status_unused = -1;
static int hf_gsm_map_Ss_Status_q_bit = -1;
static int hf_gsm_map_Ss_Status_p_bit = -1;
static int hf_gsm_map_Ss_Status_r_bit = -1;
static int hf_gsm_map_Ss_Status_a_bit = -1;
static int hf_gsm_map_notification_to_forwarding_party = -1;
static int hf_gsm_map_redirecting_presentation = -1;
static int hf_gsm_map_notification_to_calling_party = -1;
static int hf_gsm_map_forwarding_reason = -1;
static int hf_gsm_map_pdp_type_org = -1;
static int hf_gsm_map_etsi_pdp_type_number = -1;
static int hf_gsm_map_ietf_pdp_type_number = -1;
static int hf_gsm_map_ext_qos_subscribed_pri = -1;

static int hf_gsm_map_qos_traffic_cls = -1;
static int hf_gsm_map_qos_del_order = -1;
static int hf_gsm_map_qos_del_of_err_sdu = -1;
static int hf_gsm_map_qos_ber = -1;
static int hf_gsm_map_qos_sdu_err_rat = -1;
static int hf_gsm_map_qos_traff_hdl_pri = -1;
static int hf_gsm_map_qos_max_sdu = -1;
static int hf_gsm_map_max_brate_ulink = -1;
static int hf_gsm_map_max_brate_dlink = -1;
static int hf_gsm_map_qos_transfer_delay = -1;
static int hf_gsm_map_guaranteed_max_brate_ulink = -1;
static int hf_gsm_map_guaranteed_max_brate_dlink = -1;
static int hf_gsm_map_GSNAddress_IPv4 = -1;
static int hf_gsm_map_GSNAddress_IPv6 = -1;
static int hf_gsm_map_ranap_service_Handover = -1;
static int hf_gsm_map_IntegrityProtectionInformation = -1;
static int hf_gsm_map_EncryptionInformation = -1;
static int hf_gsm_map_PlmnContainer_PDU = -1;
static int hf_gsm_map_ss_SS_UserData = -1;
static int hf_gsm_map_cbs_coding_grp = -1;
static int hf_gsm_map_cbs_coding_grp0_lang = -1;
static int hf_gsm_map_cbs_coding_grp1_lang = -1;
static int hf_gsm_map_cbs_coding_grp2_lang = -1;
static int hf_gsm_map_cbs_coding_grp3_lang = -1;
static int hf_gsm_map_cbs_coding_grp4_7_comp = -1;
static int hf_gsm_map_cbs_coding_grp4_7_class_ind = -1;
static int hf_gsm_map_cbs_coding_grp4_7_char_set = -1;
static int hf_gsm_map_cbs_coding_grp4_7_class = -1;
static int hf_gsm_map_cbs_coding_grp15_mess_code = -1;
static int hf_gsm_map_cbs_coding_grp15_class = -1;
static int hf_gsm_map_tmsi = -1;
static int hf_gsm_map_ie_tag = -1;
static int hf_gsm_map_len = -1;
static int hf_gsm_map_disc_par = -1;
static int hf_gsm_map_dlci = -1;


/*--- Included file: packet-gsm_map-hf.c ---*/
#line 1 "../../asn1/gsm_map/packet-gsm_map-hf.c"

/* --- Module MAP-ExtensionDataTypes --- --- ---                              */

static int hf_gsm_map_privateExtensionList = -1;  /* PrivateExtensionList */
static int hf_gsm_map_pcs_Extensions = -1;        /* PCS_Extensions */
static int hf_gsm_map_slr_Arg_PCS_Extensions = -1;  /* SLR_Arg_PCS_Extensions */
static int hf_gsm_map_PrivateExtensionList_item = -1;  /* PrivateExtension */
static int hf_gsm_map_extId = -1;                 /* T_extId */
static int hf_gsm_map_extType = -1;               /* T_extType */
static int hf_gsm_map_na_ESRK_Request = -1;       /* NULL */

/* --- Module MAP-CommonDataTypes --- --- ---                                 */

static int hf_gsm_map_gsm_map_ISDN_AddressString_PDU = -1;  /* ISDN_AddressString */
static int hf_gsm_map_protocolId = -1;            /* ProtocolId */
static int hf_gsm_map_signalInfo = -1;            /* SignalInfo */
static int hf_gsm_map_extensionContainer = -1;    /* ExtensionContainer */
static int hf_gsm_map_ext_ProtocolId = -1;        /* Ext_ProtocolId */
static int hf_gsm_map_accessNetworkProtocolId = -1;  /* AccessNetworkProtocolId */
static int hf_gsm_map_signalInfo_01 = -1;         /* LongSignalInfo */
static int hf_gsm_map_imsi = -1;                  /* IMSI */
static int hf_gsm_map_imsi_WithLMSI = -1;         /* IMSI_WithLMSI */
static int hf_gsm_map_lmsi = -1;                  /* LMSI */
static int hf_gsm_map_HLR_List_item = -1;         /* HLR_Id */
static int hf_gsm_map_naea_PreferredCIC = -1;     /* NAEA_CIC */
static int hf_gsm_map_msisdn = -1;                /* ISDN_AddressString */
static int hf_gsm_map_externalAddress = -1;       /* ISDN_AddressString */
static int hf_gsm_map_cellGlobalIdOrServiceAreaIdFixedLength = -1;  /* CellGlobalIdOrServiceAreaIdFixedLength */
static int hf_gsm_map_laiFixedLength = -1;        /* LAIFixedLength */
static int hf_gsm_map_bearerService = -1;         /* BearerServiceCode */
static int hf_gsm_map_teleservice = -1;           /* TeleserviceCode */
static int hf_gsm_map_ext_BearerService = -1;     /* Ext_BearerServiceCode */
static int hf_gsm_map_ext_Teleservice = -1;       /* Ext_TeleserviceCode */
static int hf_gsm_map_maximumentitledPriority = -1;  /* EMLPP_Priority */
static int hf_gsm_map_defaultPriority = -1;       /* EMLPP_Priority */
static int hf_gsm_map_ss_Code = -1;               /* SS_Code */
static int hf_gsm_map_ss_Status = -1;             /* Ext_SS_Status */
static int hf_gsm_map_nbrSB = -1;                 /* MaxMC_Bearers */
static int hf_gsm_map_nbrUser = -1;               /* MC_Bearers */

/* --- Module MAP-SS-DataTypes --- --- ---                                    */

static int hf_gsm_map_ss_ss_Code = -1;            /* SS_Code */
static int hf_gsm_map_ss_basicService = -1;       /* BasicServiceCode */
static int hf_gsm_map_ss_forwardedToNumber = -1;  /* AddressString */
static int hf_gsm_map_ss_forwardedToSubaddress = -1;  /* ISDN_SubaddressString */
static int hf_gsm_map_ss_noReplyConditionTime = -1;  /* NoReplyConditionTime */
static int hf_gsm_map_ss_defaultPriority = -1;    /* EMLPP_Priority */
static int hf_gsm_map_ss_nbrUser = -1;            /* MC_Bearers */
static int hf_gsm_map_ss_longFTN_Supported = -1;  /* NULL */
static int hf_gsm_map_ss_forwardingInfo = -1;     /* ForwardingInfo */
static int hf_gsm_map_ss_callBarringInfo = -1;    /* CallBarringInfo */
static int hf_gsm_map_ss_ss_Data = -1;            /* SS_Data */
static int hf_gsm_map_ss_forwardingFeatureList = -1;  /* ForwardingFeatureList */
static int hf_gsm_map_ss_ForwardingFeatureList_item = -1;  /* ForwardingFeature */
static int hf_gsm_map_ss_ss_Status = -1;          /* SS_Status */
static int hf_gsm_map_ss_forwardedToNumber_01 = -1;  /* ISDN_AddressString */
static int hf_gsm_map_ss_forwardingOptions = -1;  /* ForwardingOptions */
static int hf_gsm_map_ss_longForwardedToNumber = -1;  /* FTN_AddressString */
static int hf_gsm_map_ss_callBarringFeatureList = -1;  /* CallBarringFeatureList */
static int hf_gsm_map_ss_CallBarringFeatureList_item = -1;  /* CallBarringFeature */
static int hf_gsm_map_ss_ss_SubscriptionOption = -1;  /* SS_SubscriptionOption */
static int hf_gsm_map_ss_basicServiceGroupList = -1;  /* BasicServiceGroupList */
static int hf_gsm_map_ss_cliRestrictionOption = -1;  /* CliRestrictionOption */
static int hf_gsm_map_ss_overrideCategory = -1;   /* OverrideCategory */
static int hf_gsm_map_ss_maximumEntitledPriority = -1;  /* EMLPP_Priority */
static int hf_gsm_map_ss_ccbs_FeatureList = -1;   /* CCBS_FeatureList */
static int hf_gsm_map_ss_nbrSB = -1;              /* MaxMC_Bearers */
static int hf_gsm_map_ss_nbrSN = -1;              /* MC_Bearers */
static int hf_gsm_map_ss_CCBS_FeatureList_item = -1;  /* CCBS_Feature */
static int hf_gsm_map_ss_ccbs_Index = -1;         /* CCBS_Index */
static int hf_gsm_map_ss_b_subscriberNumber = -1;  /* ISDN_AddressString */
static int hf_gsm_map_ss_b_subscriberSubaddress = -1;  /* ISDN_SubaddressString */
static int hf_gsm_map_ss_basicServiceGroup = -1;  /* BasicServiceCode */
static int hf_gsm_map_ss_genericServiceInfo = -1;  /* GenericServiceInfo */
static int hf_gsm_map_ss_ussd_DataCodingScheme = -1;  /* USSD_DataCodingScheme */
static int hf_gsm_map_ss_ussd_String = -1;        /* USSD_String */
static int hf_gsm_map_ss_alertingPattern = -1;    /* AlertingPattern */
static int hf_gsm_map_ss_msisdn = -1;             /* ISDN_AddressString */
static int hf_gsm_map_ss_SS_List_item = -1;       /* SS_Code */
static int hf_gsm_map_ss_BasicServiceGroupList_item = -1;  /* BasicServiceCode */
static int hf_gsm_map_ss_imsi = -1;               /* IMSI */
static int hf_gsm_map_ss_ss_Event = -1;           /* SS_Code */
static int hf_gsm_map_ss_ss_EventSpecification = -1;  /* SS_EventSpecification */
static int hf_gsm_map_ss_extensionContainer = -1;  /* ExtensionContainer */
static int hf_gsm_map_ss_ccbs_RequestState = -1;  /* CCBS_RequestState */
static int hf_gsm_map_ss_SS_EventSpecification_item = -1;  /* AddressString */
static int hf_gsm_map_ss_ccbs_Data = -1;          /* CCBS_Data */
static int hf_gsm_map_ss_ccbs_Feature = -1;       /* CCBS_Feature */
static int hf_gsm_map_ss_translatedB_Number = -1;  /* ISDN_AddressString */
static int hf_gsm_map_ss_serviceIndicator = -1;   /* ServiceIndicator */
static int hf_gsm_map_ss_callInfo = -1;           /* ExternalSignalInfo */
static int hf_gsm_map_ss_networkSignalInfo = -1;  /* ExternalSignalInfo */
/* named bits */
static int hf_gsm_map_ss_ServiceIndicator_clir_invoked = -1;
static int hf_gsm_map_ss_ServiceIndicator_camel_invoked = -1;

/* --- Module MAP-ER-DataTypes --- --- ---                                    */

static int hf_gsm_map_er_roamingNotAllowedCause = -1;  /* RoamingNotAllowedCause */
static int hf_gsm_map_er_extensionContainer = -1;  /* ExtensionContainer */
static int hf_gsm_map_er_additionalRoamingNotAllowedCause = -1;  /* AdditionalRoamingNotAllowedCause */
static int hf_gsm_map_er_callBarringCause = -1;   /* CallBarringCause */
static int hf_gsm_map_er_extensibleCallBarredParam = -1;  /* ExtensibleCallBarredParam */
static int hf_gsm_map_er_unauthorisedMessageOriginator = -1;  /* NULL */
static int hf_gsm_map_er_cug_RejectCause = -1;    /* CUG_RejectCause */
static int hf_gsm_map_er_ss_Code = -1;            /* SS_Code */
static int hf_gsm_map_er_basicService = -1;       /* BasicServiceCode */
static int hf_gsm_map_er_ss_Status = -1;          /* SS_Status */
static int hf_gsm_map_er_sm_EnumeratedDeliveryFailureCause = -1;  /* SM_EnumeratedDeliveryFailureCause */
static int hf_gsm_map_er_diagnosticInfo = -1;     /* SignalInfo */
static int hf_gsm_map_er_absentSubscriberDiagnosticSM = -1;  /* AbsentSubscriberDiagnosticSM */
static int hf_gsm_map_er_additionalAbsentSubscriberDiagnosticSM = -1;  /* AbsentSubscriberDiagnosticSM */
static int hf_gsm_map_er_networkResource = -1;    /* NetworkResource */
static int hf_gsm_map_er_extensibleSystemFailureParam = -1;  /* ExtensibleSystemFailureParam */
static int hf_gsm_map_er_additionalNetworkResource = -1;  /* AdditionalNetworkResource */
static int hf_gsm_map_er_failureCauseParam = -1;  /* FailureCauseParam */
static int hf_gsm_map_er_shapeOfLocationEstimateNotSupported = -1;  /* NULL */
static int hf_gsm_map_er_neededLcsCapabilityNotSupportedInServingNode = -1;  /* NULL */
static int hf_gsm_map_er_unknownSubscriberDiagnostic = -1;  /* UnknownSubscriberDiagnostic */
static int hf_gsm_map_er_absentSubscriberReason = -1;  /* AbsentSubscriberReason */
static int hf_gsm_map_er_ccbs_Possible = -1;      /* NULL */
static int hf_gsm_map_er_ccbs_Busy = -1;          /* NULL */
static int hf_gsm_map_er_gprsConnectionSuspended = -1;  /* NULL */
static int hf_gsm_map_er_unauthorizedLCSClient_Diagnostic = -1;  /* UnauthorizedLCSClient_Diagnostic */
static int hf_gsm_map_er_positionMethodFailure_Diagnostic = -1;  /* PositionMethodFailure_Diagnostic */

/* --- Module MAP-SM-DataTypes --- --- ---                                    */

static int hf_gsm_map_sm_msisdn = -1;             /* ISDN_AddressString */
static int hf_gsm_map_sm_sm_RP_PRI = -1;          /* BOOLEAN */
static int hf_gsm_map_sm_serviceCentreAddress = -1;  /* AddressString */
static int hf_gsm_map_sm_extensionContainer = -1;  /* ExtensionContainer */
static int hf_gsm_map_sm_gprsSupportIndicator = -1;  /* NULL */
static int hf_gsm_map_sm_sm_RP_MTI = -1;          /* SM_RP_MTI */
static int hf_gsm_map_sm_sm_RP_SMEA = -1;         /* SM_RP_SMEA */
static int hf_gsm_map_sm_sm_deliveryNotIntended = -1;  /* SM_DeliveryNotIntended */
static int hf_gsm_map_sm_imsi = -1;               /* IMSI */
static int hf_gsm_map_sm_locationInfoWithLMSI = -1;  /* LocationInfoWithLMSI */
static int hf_gsm_map_sm_mwd_Set = -1;            /* BOOLEAN */
static int hf_gsm_map_sm_networkNode_Number = -1;  /* ISDN_AddressString */
static int hf_gsm_map_sm_lmsi = -1;               /* LMSI */
static int hf_gsm_map_sm_gprsNodeIndicator = -1;  /* NULL */
static int hf_gsm_map_sm_additional_Number = -1;  /* Additional_Number */
static int hf_gsm_map_sm_msc_Number = -1;         /* ISDN_AddressString */
static int hf_gsm_map_sm_sgsn_Number = -1;        /* ISDN_AddressString */
static int hf_gsm_map_sm_sm_RP_DA = -1;           /* SM_RP_DA */
static int hf_gsm_map_sm_sm_RP_OA = -1;           /* SM_RP_OA */
static int hf_gsm_map_sm_sm_RP_UI = -1;           /* SignalInfo */
static int hf_gsm_map_sm_moreMessagesToSend = -1;  /* NULL */
static int hf_gsm_map_sm_serviceCentreAddressDA = -1;  /* AddressString */
static int hf_gsm_map_sm_noSM_RP_DA = -1;         /* NULL */
static int hf_gsm_map_sm_msisdn_01 = -1;          /* T_msisdn */
static int hf_gsm_map_sm_serviceCentreAddressOA = -1;  /* T_serviceCentreAddressOA */
static int hf_gsm_map_sm_noSM_RP_OA = -1;         /* NULL */
static int hf_gsm_map_sm_sm_DeliveryOutcome = -1;  /* SM_DeliveryOutcome */
static int hf_gsm_map_sm_absentSubscriberDiagnosticSM = -1;  /* AbsentSubscriberDiagnosticSM */
static int hf_gsm_map_sm_deliveryOutcomeIndicator = -1;  /* NULL */
static int hf_gsm_map_sm_additionalSM_DeliveryOutcome = -1;  /* SM_DeliveryOutcome */
static int hf_gsm_map_sm_additionalAbsentSubscriberDiagnosticSM = -1;  /* AbsentSubscriberDiagnosticSM */
static int hf_gsm_map_sm_ip_sm_gw_Indicator = -1;  /* NULL */
static int hf_gsm_map_sm_ip_sm_gw_sm_deliveryOutcome = -1;  /* SM_DeliveryOutcome */
static int hf_gsm_map_sm_ip_sm_gw_absentSubscriberDiagnosticSM = -1;  /* AbsentSubscriberDiagnosticSM */
static int hf_gsm_map_sm_storedMSISDN = -1;       /* ISDN_AddressString */
static int hf_gsm_map_sm_mw_Status = -1;          /* MW_Status */
static int hf_gsm_map_sm_alertReason = -1;        /* AlertReason */
static int hf_gsm_map_sm_alertReasonIndicator = -1;  /* NULL */
static int hf_gsm_map_sm_additionalAlertReasonIndicator = -1;  /* NULL */
static int hf_gsm_map_sm_asciCallReference = -1;  /* ASCI_CallReference */
static int hf_gsm_map_sm_dispatcherList = -1;     /* DispatcherList */
static int hf_gsm_map_sm_ongoingCall = -1;        /* NULL */
static int hf_gsm_map_sm_DispatcherList_item = -1;  /* ISDN_AddressString */
/* named bits */
static int hf_gsm_map_sm_MW_Status_sc_AddressNotIncluded = -1;
static int hf_gsm_map_sm_MW_Status_mnrf_Set = -1;
static int hf_gsm_map_sm_MW_Status_mcef_Set = -1;
static int hf_gsm_map_sm_MW_Status_mnrg_Set = -1;

/* --- Module MAP-OM-DataTypes --- --- ---                                    */

static int hf_gsm_map_om_imsi = -1;               /* IMSI */
static int hf_gsm_map_om_traceReference = -1;     /* TraceReference */
static int hf_gsm_map_om_traceType = -1;          /* TraceType */
static int hf_gsm_map_om_omc_Id = -1;             /* AddressString */
static int hf_gsm_map_om_extensionContainer = -1;  /* ExtensionContainer */
static int hf_gsm_map_om_traceReference2 = -1;    /* TraceReference2 */
static int hf_gsm_map_om_traceDepthList = -1;     /* TraceDepthList */
static int hf_gsm_map_om_traceNE_TypeList = -1;   /* TraceNE_TypeList */
static int hf_gsm_map_om_traceInterfaceList = -1;  /* TraceInterfaceList */
static int hf_gsm_map_om_traceEventList = -1;     /* TraceEventList */
static int hf_gsm_map_om_traceCollectionEntity = -1;  /* GSN_Address */
static int hf_gsm_map_om_msc_s_TraceDepth = -1;   /* TraceDepth */
static int hf_gsm_map_om_mgw_TraceDepth = -1;     /* TraceDepth */
static int hf_gsm_map_om_sgsn_TraceDepth = -1;    /* TraceDepth */
static int hf_gsm_map_om_ggsn_TraceDepth = -1;    /* TraceDepth */
static int hf_gsm_map_om_rnc_TraceDepth = -1;     /* TraceDepth */
static int hf_gsm_map_om_bmsc_TraceDepth = -1;    /* TraceDepth */
static int hf_gsm_map_om_mme_TraceDepth = -1;     /* TraceDepth */
static int hf_gsm_map_om_sgw_TraceDepth = -1;     /* TraceDepth */
static int hf_gsm_map_om_pgw_TraceDepth = -1;     /* TraceDepth */
static int hf_gsm_map_om_eNB_TraceDepth = -1;     /* TraceDepth */
static int hf_gsm_map_om_msc_s_List = -1;         /* MSC_S_InterfaceList */
static int hf_gsm_map_om_mgw_List = -1;           /* MGW_InterfaceList */
static int hf_gsm_map_om_sgsn_List = -1;          /* SGSN_InterfaceList */
static int hf_gsm_map_om_ggsn_List = -1;          /* GGSN_InterfaceList */
static int hf_gsm_map_om_rnc_List = -1;           /* RNC_InterfaceList */
static int hf_gsm_map_om_bmsc_List = -1;          /* BMSC_InterfaceList */
static int hf_gsm_map_om_mme_List = -1;           /* MME_InterfaceList */
static int hf_gsm_map_om_sgw_List = -1;           /* SGW_InterfaceList */
static int hf_gsm_map_om_pgw_List = -1;           /* PGW_InterfaceList */
static int hf_gsm_map_om_eNB_List = -1;           /* ENB_InterfaceList */
static int hf_gsm_map_om_msc_s_List_01 = -1;      /* MSC_S_EventList */
static int hf_gsm_map_om_mgw_List_01 = -1;        /* MGW_EventList */
static int hf_gsm_map_om_sgsn_List_01 = -1;       /* SGSN_EventList */
static int hf_gsm_map_om_ggsn_List_01 = -1;       /* GGSN_EventList */
static int hf_gsm_map_om_bmsc_List_01 = -1;       /* BMSC_EventList */
static int hf_gsm_map_om_mme_List_01 = -1;        /* MME_EventList */
static int hf_gsm_map_om_sgw_List_01 = -1;        /* SGW_EventList */
static int hf_gsm_map_om_pgw_List_01 = -1;        /* PGW_EventList */
static int hf_gsm_map_om_traceRecordingSessionReference = -1;  /* TraceRecordingSessionReference */
static int hf_gsm_map_om_rnc_InterfaceList = -1;  /* RNC_InterfaceList */
static int hf_gsm_map_om_msc_s_InterfaceList = -1;  /* MSC_S_InterfaceList */
static int hf_gsm_map_om_msc_s_EventList = -1;    /* MSC_S_EventList */
static int hf_gsm_map_om_mgw_InterfaceList = -1;  /* MGW_InterfaceList */
static int hf_gsm_map_om_mgw_EventList = -1;      /* MGW_EventList */
static int hf_gsm_map_om_traceSupportIndicator = -1;  /* NULL */
/* named bits */
static int hf_gsm_map_om_TraceNE_TypeList_msc_s = -1;
static int hf_gsm_map_om_TraceNE_TypeList_mgw = -1;
static int hf_gsm_map_om_TraceNE_TypeList_sgsn = -1;
static int hf_gsm_map_om_TraceNE_TypeList_ggsn = -1;
static int hf_gsm_map_om_TraceNE_TypeList_rnc = -1;
static int hf_gsm_map_om_TraceNE_TypeList_bm_sc = -1;
static int hf_gsm_map_om_TraceNE_TypeList_mme = -1;
static int hf_gsm_map_om_TraceNE_TypeList_sgw = -1;
static int hf_gsm_map_om_TraceNE_TypeList_pgw = -1;
static int hf_gsm_map_om_TraceNE_TypeList_eNB = -1;
static int hf_gsm_map_om_MSC_S_InterfaceList_a = -1;
static int hf_gsm_map_om_MSC_S_InterfaceList_iu = -1;
static int hf_gsm_map_om_MSC_S_InterfaceList_mc = -1;
static int hf_gsm_map_om_MSC_S_InterfaceList_map_g = -1;
static int hf_gsm_map_om_MSC_S_InterfaceList_map_b = -1;
static int hf_gsm_map_om_MSC_S_InterfaceList_map_e = -1;
static int hf_gsm_map_om_MSC_S_InterfaceList_map_f = -1;
static int hf_gsm_map_om_MSC_S_InterfaceList_cap = -1;
static int hf_gsm_map_om_MSC_S_InterfaceList_map_d = -1;
static int hf_gsm_map_om_MSC_S_InterfaceList_map_c = -1;
static int hf_gsm_map_om_MGW_InterfaceList_mc = -1;
static int hf_gsm_map_om_MGW_InterfaceList_nb_up = -1;
static int hf_gsm_map_om_MGW_InterfaceList_iu_up = -1;
static int hf_gsm_map_om_SGSN_InterfaceList_gb = -1;
static int hf_gsm_map_om_SGSN_InterfaceList_iu = -1;
static int hf_gsm_map_om_SGSN_InterfaceList_gn = -1;
static int hf_gsm_map_om_SGSN_InterfaceList_map_gr = -1;
static int hf_gsm_map_om_SGSN_InterfaceList_map_gd = -1;
static int hf_gsm_map_om_SGSN_InterfaceList_map_gf = -1;
static int hf_gsm_map_om_SGSN_InterfaceList_gs = -1;
static int hf_gsm_map_om_SGSN_InterfaceList_ge = -1;
static int hf_gsm_map_om_SGSN_InterfaceList_s3 = -1;
static int hf_gsm_map_om_SGSN_InterfaceList_s4 = -1;
static int hf_gsm_map_om_SGSN_InterfaceList_s6d = -1;
static int hf_gsm_map_om_GGSN_InterfaceList_gn = -1;
static int hf_gsm_map_om_GGSN_InterfaceList_gi = -1;
static int hf_gsm_map_om_GGSN_InterfaceList_gmb = -1;
static int hf_gsm_map_om_RNC_InterfaceList_iu = -1;
static int hf_gsm_map_om_RNC_InterfaceList_iur = -1;
static int hf_gsm_map_om_RNC_InterfaceList_iub = -1;
static int hf_gsm_map_om_RNC_InterfaceList_uu = -1;
static int hf_gsm_map_om_BMSC_InterfaceList_gmb = -1;
static int hf_gsm_map_om_MME_InterfaceList_s1_mme = -1;
static int hf_gsm_map_om_MME_InterfaceList_s3 = -1;
static int hf_gsm_map_om_MME_InterfaceList_s6a = -1;
static int hf_gsm_map_om_MME_InterfaceList_s10 = -1;
static int hf_gsm_map_om_MME_InterfaceList_s11 = -1;
static int hf_gsm_map_om_SGW_InterfaceList_s4 = -1;
static int hf_gsm_map_om_SGW_InterfaceList_s5 = -1;
static int hf_gsm_map_om_SGW_InterfaceList_s8b = -1;
static int hf_gsm_map_om_SGW_InterfaceList_s11 = -1;
static int hf_gsm_map_om_SGW_InterfaceList_gxc = -1;
static int hf_gsm_map_om_PGW_InterfaceList_s2a = -1;
static int hf_gsm_map_om_PGW_InterfaceList_s2b = -1;
static int hf_gsm_map_om_PGW_InterfaceList_s2c = -1;
static int hf_gsm_map_om_PGW_InterfaceList_s5 = -1;
static int hf_gsm_map_om_PGW_InterfaceList_s6b = -1;
static int hf_gsm_map_om_PGW_InterfaceList_gx = -1;
static int hf_gsm_map_om_PGW_InterfaceList_s8b = -1;
static int hf_gsm_map_om_PGW_InterfaceList_sgi = -1;
static int hf_gsm_map_om_ENB_InterfaceList_s1_mme = -1;
static int hf_gsm_map_om_ENB_InterfaceList_x2 = -1;
static int hf_gsm_map_om_ENB_InterfaceList_uu = -1;
static int hf_gsm_map_om_MSC_S_EventList_mo_mtCall = -1;
static int hf_gsm_map_om_MSC_S_EventList_mo_mt_sms = -1;
static int hf_gsm_map_om_MSC_S_EventList_lu_imsiAttach_imsiDetach = -1;
static int hf_gsm_map_om_MSC_S_EventList_handovers = -1;
static int hf_gsm_map_om_MSC_S_EventList_ss = -1;
static int hf_gsm_map_om_MGW_EventList_context = -1;
static int hf_gsm_map_om_SGSN_EventList_pdpContext = -1;
static int hf_gsm_map_om_SGSN_EventList_mo_mt_sms = -1;
static int hf_gsm_map_om_SGSN_EventList_rau_gprsAttach_gprsDetach = -1;
static int hf_gsm_map_om_SGSN_EventList_mbmsContext = -1;
static int hf_gsm_map_om_GGSN_EventList_pdpContext = -1;
static int hf_gsm_map_om_GGSN_EventList_mbmsContext = -1;
static int hf_gsm_map_om_BMSC_EventList_mbmsMulticastServiceActivation = -1;
static int hf_gsm_map_om_MME_EventList_ue_initiatedPDNconectivityRequest = -1;
static int hf_gsm_map_om_MME_EventList_serviceRequestts = -1;
static int hf_gsm_map_om_MME_EventList_initialAttachTrackingAreaUpdateDetach = -1;
static int hf_gsm_map_om_MME_EventList_ue_initiatedPDNdisconnection = -1;
static int hf_gsm_map_om_MME_EventList_bearerActivationModificationDeletion = -1;
static int hf_gsm_map_om_MME_EventList_handover = -1;
static int hf_gsm_map_om_SGW_EventList_pdn_connectionCreation = -1;
static int hf_gsm_map_om_SGW_EventList_pdn_connectionTermination = -1;
static int hf_gsm_map_om_SGW_EventList_bearerActivationModificationDeletion = -1;
static int hf_gsm_map_om_PGW_EventList_pdn_connectionCreation = -1;
static int hf_gsm_map_om_PGW_EventList_pdn_connectionTermination = -1;
static int hf_gsm_map_om_PGW_EventList_bearerActivationModificationDeletion = -1;

/* --- Module MAP-MS-DataTypes --- --- ---                                    */

static int hf_gsm_map_ms_imsi = -1;               /* IMSI */
static int hf_gsm_map_ms_msc_Number = -1;         /* ISDN_AddressString */
static int hf_gsm_map_ms_vlr_Number = -1;         /* ISDN_AddressString */
static int hf_gsm_map_ms_lmsi = -1;               /* LMSI */
static int hf_gsm_map_ms_extensionContainer = -1;  /* ExtensionContainer */
static int hf_gsm_map_ms_vlr_Capability = -1;     /* VLR_Capability */
static int hf_gsm_map_ms_informPreviousNetworkEntity = -1;  /* NULL */
static int hf_gsm_map_ms_cs_LCS_NotSupportedByUE = -1;  /* NULL */
static int hf_gsm_map_ms_v_gmlc_Address = -1;     /* GSN_Address */
static int hf_gsm_map_ms_add_info = -1;           /* ADD_Info */
static int hf_gsm_map_ms_pagingArea = -1;         /* PagingArea */
static int hf_gsm_map_ms_skipSubscriberDataUpdate = -1;  /* NULL */
static int hf_gsm_map_ms_restorationIndicator = -1;  /* NULL */
static int hf_gsm_map_ms_supportedCamelPhases = -1;  /* SupportedCamelPhases */
static int hf_gsm_map_ms_solsaSupportIndicator = -1;  /* NULL */
static int hf_gsm_map_ms_istSupportIndicator = -1;  /* IST_SupportIndicator */
static int hf_gsm_map_ms_superChargerSupportedInServingNetworkEntity = -1;  /* SuperChargerInfo */
static int hf_gsm_map_ms_longFTN_Supported = -1;  /* NULL */
static int hf_gsm_map_ms_supportedLCS_CapabilitySets = -1;  /* SupportedLCS_CapabilitySets */
static int hf_gsm_map_ms_offeredCamel4CSIs = -1;  /* OfferedCamel4CSIs */
static int hf_gsm_map_ms_supportedRAT_TypesIndicator = -1;  /* SupportedRAT_Types */
static int hf_gsm_map_ms_longGroupID_Supported = -1;  /* NULL */
static int hf_gsm_map_ms_sendSubscriberData = -1;  /* NULL */
static int hf_gsm_map_ms_subscriberDataStored = -1;  /* AgeIndicator */
static int hf_gsm_map_ms_hlr_Number = -1;         /* ISDN_AddressString */
static int hf_gsm_map_ms_add_Capability = -1;     /* NULL */
static int hf_gsm_map_ms_pagingArea_Capability = -1;  /* NULL */
static int hf_gsm_map_ms_imeisv = -1;             /* IMEI */
static int hf_gsm_map_ms_PagingArea_item = -1;    /* LocationArea */
static int hf_gsm_map_ms_laiFixedLength = -1;     /* LAIFixedLength */
static int hf_gsm_map_ms_lac = -1;                /* LAC */
static int hf_gsm_map_ms_identity = -1;           /* Identity */
static int hf_gsm_map_ms_cancellationType = -1;   /* CancellationType */
static int hf_gsm_map_ms_typeOfUpdate = -1;       /* TypeOfUpdate */
static int hf_gsm_map_ms_sgsn_Number = -1;        /* ISDN_AddressString */
static int hf_gsm_map_ms_freezeTMSI = -1;         /* NULL */
static int hf_gsm_map_ms_freezeP_TMSI = -1;       /* NULL */
static int hf_gsm_map_ms_freezeM_TMSI = -1;       /* NULL */
static int hf_gsm_map_ms_tmsi = -1;               /* TMSI */
static int hf_gsm_map_ms_numberOfRequestedVectors = -1;  /* NumberOfRequestedVectors */
static int hf_gsm_map_ms_segmentationProhibited = -1;  /* NULL */
static int hf_gsm_map_ms_previous_LAI = -1;       /* LAIFixedLength */
static int hf_gsm_map_ms_hopCounter = -1;         /* HopCounter */
static int hf_gsm_map_ms_authenticationSetList = -1;  /* AuthenticationSetList */
static int hf_gsm_map_ms_currentSecurityContext = -1;  /* CurrentSecurityContext */
static int hf_gsm_map_ms_tripletList = -1;        /* TripletList */
static int hf_gsm_map_ms_quintupletList = -1;     /* QuintupletList */
static int hf_gsm_map_ms_TripletList_item = -1;   /* AuthenticationTriplet */
static int hf_gsm_map_ms_QuintupletList_item = -1;  /* AuthenticationQuintuplet */
static int hf_gsm_map_ms_rand = -1;               /* RAND */
static int hf_gsm_map_ms_sres = -1;               /* SRES */
static int hf_gsm_map_ms_kc = -1;                 /* Kc */
static int hf_gsm_map_ms_xres = -1;               /* XRES */
static int hf_gsm_map_ms_ck = -1;                 /* CK */
static int hf_gsm_map_ms_ik = -1;                 /* IK */
static int hf_gsm_map_ms_autn = -1;               /* AUTN */
static int hf_gsm_map_ms_gsm_SecurityContextData = -1;  /* GSM_SecurityContextData */
static int hf_gsm_map_ms_umts_SecurityContextData = -1;  /* UMTS_SecurityContextData */
static int hf_gsm_map_ms_cksn = -1;               /* Cksn */
static int hf_gsm_map_ms_ksi = -1;                /* KSI */
static int hf_gsm_map_ms_failureCause = -1;       /* FailureCause */
static int hf_gsm_map_ms_re_attempt = -1;         /* BOOLEAN */
static int hf_gsm_map_ms_accessType = -1;         /* AccessType */
static int hf_gsm_map_ms_sgsn_Address = -1;       /* GSN_Address */
static int hf_gsm_map_ms_sgsn_Capability = -1;    /* SGSN_Capability */
static int hf_gsm_map_ms_ps_LCS_NotSupportedByUE = -1;  /* NULL */
static int hf_gsm_map_ms_eps_info = -1;           /* EPS_Info */
static int hf_gsm_map_ms_servingNodeTypeIndicator = -1;  /* NULL */
static int hf_gsm_map_ms_usedRAT_Type = -1;       /* Used_RAT_Type */
static int hf_gsm_map_ms_gprsSubscriptionDataNotNeeded = -1;  /* NULL */
static int hf_gsm_map_ms_nodeTypeIndicator = -1;  /* NULL */
static int hf_gsm_map_ms_areaRestricted = -1;     /* NULL */
static int hf_gsm_map_ms_ue_reachableIndicator = -1;  /* NULL */
static int hf_gsm_map_ms_epsSubscriptionDataNotNeeded = -1;  /* NULL */
static int hf_gsm_map_ms_pdn_gw_update = -1;      /* PDN_GW_Update */
static int hf_gsm_map_ms_isr_Information = -1;    /* ISR_Information */
static int hf_gsm_map_ms_apn = -1;                /* APN */
static int hf_gsm_map_ms_pdn_gw_Identity = -1;    /* PDN_GW_Identity */
static int hf_gsm_map_ms_contextId = -1;          /* ContextId */
static int hf_gsm_map_ms_gprsEnhancementsSupportIndicator = -1;  /* NULL */
static int hf_gsm_map_ms_smsCallBarringSupportIndicator = -1;  /* NULL */
static int hf_gsm_map_ms_supportedFeatures = -1;  /* SupportedFeatures */
static int hf_gsm_map_ms_t_adsDataRetrieval = -1;  /* NULL */
static int hf_gsm_map_ms_homogeneousSupportOfIMSVoiceOverPSSessions = -1;  /* BOOLEAN */
static int hf_gsm_map_ms_sgsn_mmeSeparationSupported = -1;  /* NULL */
static int hf_gsm_map_ms_an_APDU = -1;            /* AccessNetworkSignalInfo */
static int hf_gsm_map_ms_integrityProtectionInfo = -1;  /* IntegrityProtectionInformation */
static int hf_gsm_map_ms_encryptionInfo = -1;     /* EncryptionInformation */
static int hf_gsm_map_ms_keyStatus = -1;          /* KeyStatus */
static int hf_gsm_map_ms_allowedGSM_Algorithms = -1;  /* AllowedGSM_Algorithms */
static int hf_gsm_map_ms_allowedUMTS_Algorithms = -1;  /* AllowedUMTS_Algorithms */
static int hf_gsm_map_ms_radioResourceInformation = -1;  /* RadioResourceInformation */
static int hf_gsm_map_ms_radioResourceList = -1;  /* RadioResourceList */
static int hf_gsm_map_ms_bssmap_ServiceHandover = -1;  /* BSSMAP_ServiceHandover */
static int hf_gsm_map_ms_ranap_ServiceHandover = -1;  /* RANAP_ServiceHandover */
static int hf_gsm_map_ms_bssmap_ServiceHandoverList = -1;  /* BSSMAP_ServiceHandoverList */
static int hf_gsm_map_ms_currentlyUsedCodec = -1;  /* Codec */
static int hf_gsm_map_ms_iuSupportedCodecsList = -1;  /* SupportedCodecsList */
static int hf_gsm_map_ms_rab_ConfigurationIndicator = -1;  /* NULL */
static int hf_gsm_map_ms_iuSelectedCodec = -1;    /* Codec */
static int hf_gsm_map_ms_alternativeChannelType = -1;  /* RadioResourceInformation */
static int hf_gsm_map_ms_tracePropagationList = -1;  /* TracePropagationList */
static int hf_gsm_map_ms_aoipSupportedCodecsListAnchor = -1;  /* AoIPCodecsList */
static int hf_gsm_map_ms_aoipSelectedCodecTarget = -1;  /* AoIPCodec */
static int hf_gsm_map_ms_integrityProtectionAlgorithms = -1;  /* PermittedIntegrityProtectionAlgorithms */
static int hf_gsm_map_ms_encryptionAlgorithms = -1;  /* PermittedEncryptionAlgorithms */
static int hf_gsm_map_ms_targetCellId = -1;       /* GlobalCellId */
static int hf_gsm_map_ms_ho_NumberNotRequired = -1;  /* NULL */
static int hf_gsm_map_ms_targetRNCId = -1;        /* RNCId */
static int hf_gsm_map_ms_multipleBearerRequested = -1;  /* NULL */
static int hf_gsm_map_ms_rab_Id = -1;             /* RAB_Id */
static int hf_gsm_map_ms_asciCallReference = -1;  /* ASCI_CallReference */
static int hf_gsm_map_ms_geran_classmark = -1;    /* GERAN_Classmark */
static int hf_gsm_map_ms_iuCurrentlyUsedCodec = -1;  /* Codec */
static int hf_gsm_map_ms_uesbi_Iu = -1;           /* UESBI_Iu */
static int hf_gsm_map_ms_BSSMAP_ServiceHandoverList_item = -1;  /* BSSMAP_ServiceHandoverInfo */
static int hf_gsm_map_ms_RadioResourceList_item = -1;  /* RadioResource */
static int hf_gsm_map_ms_handoverNumber = -1;     /* ISDN_AddressString */
static int hf_gsm_map_ms_relocationNumberList = -1;  /* RelocationNumberList */
static int hf_gsm_map_ms_multicallBearerInfo = -1;  /* MulticallBearerInfo */
static int hf_gsm_map_ms_multipleBearerNotSupported = -1;  /* NULL */
static int hf_gsm_map_ms_selectedUMTS_Algorithms = -1;  /* SelectedUMTS_Algorithms */
static int hf_gsm_map_ms_chosenRadioResourceInformation = -1;  /* ChosenRadioResourceInformation */
static int hf_gsm_map_ms_iuAvailableCodecsList = -1;  /* CodecList */
static int hf_gsm_map_ms_aoipAvailableCodecsListMap = -1;  /* AoIPCodecsList */
static int hf_gsm_map_ms_integrityProtectionAlgorithm = -1;  /* ChosenIntegrityProtectionAlgorithm */
static int hf_gsm_map_ms_encryptionAlgorithm = -1;  /* ChosenEncryptionAlgorithm */
static int hf_gsm_map_ms_chosenChannelInfo = -1;  /* ChosenChannelInfo */
static int hf_gsm_map_ms_chosenSpeechVersion = -1;  /* ChosenSpeechVersion */
static int hf_gsm_map_ms_targetMSC_Number = -1;   /* ISDN_AddressString */
static int hf_gsm_map_ms_selectedRab_Id = -1;     /* RAB_Id */
static int hf_gsm_map_ms_selectedGSM_Algorithm = -1;  /* SelectedGSM_Algorithm */
static int hf_gsm_map_ms_iUSelectedCodec = -1;    /* Codec */
static int hf_gsm_map_ms_codec1 = -1;             /* AoIPCodec */
static int hf_gsm_map_ms_codec2 = -1;             /* AoIPCodec */
static int hf_gsm_map_ms_codec3 = -1;             /* AoIPCodec */
static int hf_gsm_map_ms_codec4 = -1;             /* AoIPCodec */
static int hf_gsm_map_ms_codec5 = -1;             /* AoIPCodec */
static int hf_gsm_map_ms_codec6 = -1;             /* AoIPCodec */
static int hf_gsm_map_ms_codec7 = -1;             /* AoIPCodec */
static int hf_gsm_map_ms_codec8 = -1;             /* AoIPCodec */
static int hf_gsm_map_ms_utranCodecList = -1;     /* CodecList */
static int hf_gsm_map_ms_geranCodecList = -1;     /* CodecList */
static int hf_gsm_map_ms_codec1_01 = -1;          /* Codec */
static int hf_gsm_map_ms_codec2_01 = -1;          /* Codec */
static int hf_gsm_map_ms_codec3_01 = -1;          /* Codec */
static int hf_gsm_map_ms_codec4_01 = -1;          /* Codec */
static int hf_gsm_map_ms_codec5_01 = -1;          /* Codec */
static int hf_gsm_map_ms_codec6_01 = -1;          /* Codec */
static int hf_gsm_map_ms_codec7_01 = -1;          /* Codec */
static int hf_gsm_map_ms_codec8_01 = -1;          /* Codec */
static int hf_gsm_map_ms_RelocationNumberList_item = -1;  /* RelocationNumber */
static int hf_gsm_map_ms_immediateResponsePreferred = -1;  /* NULL */
static int hf_gsm_map_ms_re_synchronisationInfo = -1;  /* Re_synchronisationInfo */
static int hf_gsm_map_ms_requestingNodeType = -1;  /* RequestingNodeType */
static int hf_gsm_map_ms_requestingPLMN_Id = -1;  /* PLMN_Id */
static int hf_gsm_map_ms_numberOfRequestedAdditional_Vectors = -1;  /* NumberOfRequestedVectors */
static int hf_gsm_map_ms_additionalVectorsAreForEPS = -1;  /* NULL */
static int hf_gsm_map_ms_auts = -1;               /* AUTS */
static int hf_gsm_map_ms_eps_AuthenticationSetList = -1;  /* EPS_AuthenticationSetList */
static int hf_gsm_map_ms_EPS_AuthenticationSetList_item = -1;  /* EPC_AV */
static int hf_gsm_map_ms_kasme = -1;              /* KASME */
static int hf_gsm_map_ms_imei = -1;               /* IMEI */
static int hf_gsm_map_ms_requestedEquipmentInfo = -1;  /* RequestedEquipmentInfo */
static int hf_gsm_map_ms_equipmentStatus = -1;    /* EquipmentStatus */
static int hf_gsm_map_ms_bmuef = -1;              /* UESBI_Iu */
static int hf_gsm_map_ms_uesbi_IuA = -1;          /* UESBI_IuA */
static int hf_gsm_map_ms_uesbi_IuB = -1;          /* UESBI_IuB */
static int hf_gsm_map_ms_CSG_SubscriptionDataList_item = -1;  /* CSG_SubscriptionData */
static int hf_gsm_map_ms_csg_Id = -1;             /* CSG_Id */
static int hf_gsm_map_ms_expirationDate = -1;     /* Time */
static int hf_gsm_map_ms_apn_oi_Replacement = -1;  /* APN_OI_Replacement */
static int hf_gsm_map_ms_rfsp_id = -1;            /* RFSP_ID */
static int hf_gsm_map_ms_ambr = -1;               /* AMBR */
static int hf_gsm_map_ms_apn_ConfigurationProfile = -1;  /* APN_ConfigurationProfile */
static int hf_gsm_map_ms_stn_sr = -1;             /* ISDN_AddressString */
static int hf_gsm_map_ms_defaultContext = -1;     /* ContextId */
static int hf_gsm_map_ms_completeDataListIncluded = -1;  /* NULL */
static int hf_gsm_map_ms_epsDataList = -1;        /* EPS_DataList */
static int hf_gsm_map_ms_EPS_DataList_item = -1;  /* APN_Configuration */
static int hf_gsm_map_ms_pdn_Type = -1;           /* PDN_Type */
static int hf_gsm_map_ms_servedPartyIP_IPv4_Address = -1;  /* PDP_Address */
static int hf_gsm_map_ms_eps_qos_Subscribed = -1;  /* EPS_QoS_Subscribed */
static int hf_gsm_map_ms_pdn_gw_AllocationType = -1;  /* PDN_GW_AllocationType */
static int hf_gsm_map_ms_vplmnAddressAllowed = -1;  /* NULL */
static int hf_gsm_map_ms_chargingCharacteristics = -1;  /* ChargingCharacteristics */
static int hf_gsm_map_ms_specificAPNInfoList = -1;  /* SpecificAPNInfoList */
static int hf_gsm_map_ms_servedPartyIP_IPv6_Address = -1;  /* PDP_Address */
static int hf_gsm_map_ms_qos_Class_Identifier = -1;  /* QoS_Class_Identifier */
static int hf_gsm_map_ms_allocation_Retention_Priority = -1;  /* Allocation_Retention_Priority */
static int hf_gsm_map_ms_max_RequestedBandwidth_UL = -1;  /* Bandwidth */
static int hf_gsm_map_ms_max_RequestedBandwidth_DL = -1;  /* Bandwidth */
static int hf_gsm_map_ms_SpecificAPNInfoList_item = -1;  /* SpecificAPNInfo */
static int hf_gsm_map_ms_priority_level = -1;     /* INTEGER */
static int hf_gsm_map_ms_pre_emption_capability = -1;  /* BOOLEAN */
static int hf_gsm_map_ms_pre_emption_vulnerability = -1;  /* BOOLEAN */
static int hf_gsm_map_ms_pdn_gw_ipv4_Address = -1;  /* PDP_Address */
static int hf_gsm_map_ms_pdn_gw_ipv6_Address = -1;  /* PDP_Address */
static int hf_gsm_map_ms_pdn_gw_name = -1;        /* FQDN */
static int hf_gsm_map_ms_gmlc_List = -1;          /* GMLC_List */
static int hf_gsm_map_ms_lcs_PrivacyExceptionList = -1;  /* LCS_PrivacyExceptionList */
static int hf_gsm_map_ms_molr_List = -1;          /* MOLR_List */
static int hf_gsm_map_ms_add_lcs_PrivacyExceptionList = -1;  /* LCS_PrivacyExceptionList */
static int hf_gsm_map_ms_GMLC_List_item = -1;     /* ISDN_AddressString */
static int hf_gsm_map_ms_GPRSDataList_item = -1;  /* PDP_Context */
static int hf_gsm_map_ms_pdp_ContextId = -1;      /* ContextId */
static int hf_gsm_map_ms_pdp_Type = -1;           /* PDP_Type */
static int hf_gsm_map_ms_pdp_Address = -1;        /* PDP_Address */
static int hf_gsm_map_ms_qos_Subscribed = -1;     /* QoS_Subscribed */
static int hf_gsm_map_ms_ext_QoS_Subscribed = -1;  /* Ext_QoS_Subscribed */
static int hf_gsm_map_ms_pdp_ChargingCharacteristics = -1;  /* ChargingCharacteristics */
static int hf_gsm_map_ms_ext2_QoS_Subscribed = -1;  /* Ext2_QoS_Subscribed */
static int hf_gsm_map_ms_ext3_QoS_Subscribed = -1;  /* Ext3_QoS_Subscribed */
static int hf_gsm_map_ms_ext4_QoS_Subscribed = -1;  /* Ext4_QoS_Subscribed */
static int hf_gsm_map_ms_ext_pdp_Type = -1;       /* Ext_PDP_Type */
static int hf_gsm_map_ms_ext_pdp_Address = -1;    /* PDP_Address */
static int hf_gsm_map_ms_gprsDataList = -1;       /* GPRSDataList */
static int hf_gsm_map_ms_gprs_CSI = -1;           /* GPRS_CSI */
static int hf_gsm_map_ms_mo_sms_CSI = -1;         /* SMS_CSI */
static int hf_gsm_map_ms_mt_sms_CSI = -1;         /* SMS_CSI */
static int hf_gsm_map_ms_mt_smsCAMELTDP_CriteriaList = -1;  /* MT_smsCAMELTDP_CriteriaList */
static int hf_gsm_map_ms_mg_csi = -1;             /* MG_CSI */
static int hf_gsm_map_ms_gprs_CamelTDPDataList = -1;  /* GPRS_CamelTDPDataList */
static int hf_gsm_map_ms_camelCapabilityHandling = -1;  /* CamelCapabilityHandling */
static int hf_gsm_map_ms_notificationToCSE = -1;  /* NULL */
static int hf_gsm_map_ms_csi_Active = -1;         /* NULL */
static int hf_gsm_map_ms_GPRS_CamelTDPDataList_item = -1;  /* GPRS_CamelTDPData */
static int hf_gsm_map_ms_gprs_TriggerDetectionPoint = -1;  /* GPRS_TriggerDetectionPoint */
static int hf_gsm_map_ms_serviceKey = -1;         /* ServiceKey */
static int hf_gsm_map_ms_gsmSCF_Address = -1;     /* ISDN_AddressString */
static int hf_gsm_map_ms_defaultSessionHandling = -1;  /* DefaultGPRS_Handling */
static int hf_gsm_map_ms_LSADataList_item = -1;   /* LSAData */
static int hf_gsm_map_ms_lsaIdentity = -1;        /* LSAIdentity */
static int hf_gsm_map_ms_lsaAttributes = -1;      /* LSAAttributes */
static int hf_gsm_map_ms_lsaActiveModeIndicator = -1;  /* NULL */
static int hf_gsm_map_ms_lsaOnlyAccessIndicator = -1;  /* LSAOnlyAccessIndicator */
static int hf_gsm_map_ms_lsaDataList = -1;        /* LSADataList */
static int hf_gsm_map_ms_msisdn = -1;             /* ISDN_AddressString */
static int hf_gsm_map_ms_category = -1;           /* Category */
static int hf_gsm_map_ms_subscriberStatus = -1;   /* SubscriberStatus */
static int hf_gsm_map_ms_bearerServiceList = -1;  /* BearerServiceList */
static int hf_gsm_map_ms_teleserviceList = -1;    /* TeleserviceList */
static int hf_gsm_map_ms_provisionedSS = -1;      /* Ext_SS_InfoList */
static int hf_gsm_map_ms_odb_Data = -1;           /* ODB_Data */
static int hf_gsm_map_ms_roamingRestrictionDueToUnsupportedFeature = -1;  /* NULL */
static int hf_gsm_map_ms_regionalSubscriptionData = -1;  /* ZoneCodeList */
static int hf_gsm_map_ms_vbsSubscriptionData = -1;  /* VBSDataList */
static int hf_gsm_map_ms_vgcsSubscriptionData = -1;  /* VGCSDataList */
static int hf_gsm_map_ms_vlrCamelSubscriptionInfo = -1;  /* VlrCamelSubscriptionInfo */
static int hf_gsm_map_ms_BearerServiceList_item = -1;  /* Ext_BearerServiceCode */
static int hf_gsm_map_ms_TeleserviceList_item = -1;  /* Ext_TeleserviceCode */
static int hf_gsm_map_ms_odb_GeneralData = -1;    /* ODB_GeneralData */
static int hf_gsm_map_ms_odb_HPLMN_Data = -1;     /* ODB_HPLMN_Data */
static int hf_gsm_map_ms_Ext_SS_InfoList_item = -1;  /* Ext_SS_Info */
static int hf_gsm_map_ms_forwardingInfo = -1;     /* Ext_ForwInfo */
static int hf_gsm_map_ms_callBarringInfo = -1;    /* Ext_CallBarInfo */
static int hf_gsm_map_ms_cug_Info = -1;           /* CUG_Info */
static int hf_gsm_map_ms_ss_Data = -1;            /* Ext_SS_Data */
static int hf_gsm_map_ms_emlpp_Info = -1;         /* EMLPP_Info */
static int hf_gsm_map_ms_ss_Code = -1;            /* SS_Code */
static int hf_gsm_map_ms_forwardingFeatureList = -1;  /* Ext_ForwFeatureList */
static int hf_gsm_map_ms_Ext_ForwFeatureList_item = -1;  /* Ext_ForwFeature */
static int hf_gsm_map_ms_basicService = -1;       /* Ext_BasicServiceCode */
static int hf_gsm_map_ms_ss_Status = -1;          /* Ext_SS_Status */
static int hf_gsm_map_ms_forwardedToNumber = -1;  /* ISDN_AddressString */
static int hf_gsm_map_ms_forwardedToSubaddress = -1;  /* ISDN_SubaddressString */
static int hf_gsm_map_ms_forwardingOptions = -1;  /* T_forwardingOptions */
static int hf_gsm_map_ms_noReplyConditionTime = -1;  /* Ext_NoRepCondTime */
static int hf_gsm_map_ms_longForwardedToNumber = -1;  /* FTN_AddressString */
static int hf_gsm_map_ms_callBarringFeatureList = -1;  /* Ext_CallBarFeatureList */
static int hf_gsm_map_ms_Ext_CallBarFeatureList_item = -1;  /* Ext_CallBarringFeature */
static int hf_gsm_map_ms_cug_SubscriptionList = -1;  /* CUG_SubscriptionList */
static int hf_gsm_map_ms_cug_FeatureList = -1;    /* CUG_FeatureList */
static int hf_gsm_map_ms_CUG_SubscriptionList_item = -1;  /* CUG_Subscription */
static int hf_gsm_map_ms_cug_Index = -1;          /* CUG_Index */
static int hf_gsm_map_ms_cug_Interlock = -1;      /* CUG_Interlock */
static int hf_gsm_map_ms_intraCUG_Options = -1;   /* IntraCUG_Options */
static int hf_gsm_map_ms_basicServiceGroupList = -1;  /* Ext_BasicServiceGroupList */
static int hf_gsm_map_ms_CUG_FeatureList_item = -1;  /* CUG_Feature */
static int hf_gsm_map_ms_Ext_BasicServiceGroupList_item = -1;  /* Ext_BasicServiceCode */
static int hf_gsm_map_ms_preferentialCUG_Indicator = -1;  /* CUG_Index */
static int hf_gsm_map_ms_interCUG_Restrictions = -1;  /* InterCUG_Restrictions */
static int hf_gsm_map_ms_ss_SubscriptionOption = -1;  /* SS_SubscriptionOption */
static int hf_gsm_map_ms_LCS_PrivacyExceptionList_item = -1;  /* LCS_PrivacyClass */
static int hf_gsm_map_ms_notificationToMSUser = -1;  /* NotificationToMSUser */
static int hf_gsm_map_ms_externalClientList = -1;  /* ExternalClientList */
static int hf_gsm_map_ms_plmnClientList = -1;     /* PLMNClientList */
static int hf_gsm_map_ms_ext_externalClientList = -1;  /* Ext_ExternalClientList */
static int hf_gsm_map_ms_serviceTypeList = -1;    /* ServiceTypeList */
static int hf_gsm_map_ms_ExternalClientList_item = -1;  /* ExternalClient */
static int hf_gsm_map_ms_PLMNClientList_item = -1;  /* LCSClientInternalID */
static int hf_gsm_map_ms_Ext_ExternalClientList_item = -1;  /* ExternalClient */
static int hf_gsm_map_ms_clientIdentity = -1;     /* LCSClientExternalID */
static int hf_gsm_map_ms_gmlc_Restriction = -1;   /* GMLC_Restriction */
static int hf_gsm_map_ms_ServiceTypeList_item = -1;  /* ServiceType */
static int hf_gsm_map_ms_serviceTypeIdentity = -1;  /* LCSServiceTypeID */
static int hf_gsm_map_ms_MOLR_List_item = -1;     /* MOLR_Class */
static int hf_gsm_map_ms_ZoneCodeList_item = -1;  /* ZoneCode */
static int hf_gsm_map_ms_ss_List = -1;            /* SS_List */
static int hf_gsm_map_ms_regionalSubscriptionResponse = -1;  /* RegionalSubscriptionResponse */
static int hf_gsm_map_ms_basicServiceList = -1;   /* BasicServiceList */
static int hf_gsm_map_ms_regionalSubscriptionIdentifier = -1;  /* ZoneCode */
static int hf_gsm_map_ms_vbsGroupIndication = -1;  /* NULL */
static int hf_gsm_map_ms_vgcsGroupIndication = -1;  /* NULL */
static int hf_gsm_map_ms_camelSubscriptionInfoWithdraw = -1;  /* NULL */
static int hf_gsm_map_ms_gprsSubscriptionDataWithdraw = -1;  /* GPRSSubscriptionDataWithdraw */
static int hf_gsm_map_ms_roamingRestrictedInSgsnDueToUnsuppportedFeature = -1;  /* NULL */
static int hf_gsm_map_ms_lsaInformationWithdraw = -1;  /* LSAInformationWithdraw */
static int hf_gsm_map_ms_gmlc_ListWithdraw = -1;  /* NULL */
static int hf_gsm_map_ms_istInformationWithdraw = -1;  /* NULL */
static int hf_gsm_map_ms_specificCSI_Withdraw = -1;  /* SpecificCSI_Withdraw */
static int hf_gsm_map_ms_chargingCharacteristicsWithdraw = -1;  /* NULL */
static int hf_gsm_map_ms_stn_srWithdraw = -1;     /* NULL */
static int hf_gsm_map_ms_epsSubscriptionDataWithdraw = -1;  /* EPS_SubscriptionDataWithdraw */
static int hf_gsm_map_ms_apn_oi_replacementWithdraw = -1;  /* NULL */
static int hf_gsm_map_ms_csg_SubscriptionDeleted = -1;  /* NULL */
static int hf_gsm_map_ms_allGPRSData = -1;        /* NULL */
static int hf_gsm_map_ms_contextIdList = -1;      /* ContextIdList */
static int hf_gsm_map_ms_allEPS_Data = -1;        /* NULL */
static int hf_gsm_map_ms_ContextIdList_item = -1;  /* ContextId */
static int hf_gsm_map_ms_allLSAData = -1;         /* NULL */
static int hf_gsm_map_ms_lsaIdentityList = -1;    /* LSAIdentityList */
static int hf_gsm_map_ms_LSAIdentityList_item = -1;  /* LSAIdentity */
static int hf_gsm_map_ms_BasicServiceList_item = -1;  /* Ext_BasicServiceCode */
static int hf_gsm_map_ms_o_CSI = -1;              /* O_CSI */
static int hf_gsm_map_ms_ss_CSI = -1;             /* SS_CSI */
static int hf_gsm_map_ms_o_BcsmCamelTDP_CriteriaList = -1;  /* O_BcsmCamelTDPCriteriaList */
static int hf_gsm_map_ms_tif_CSI = -1;            /* NULL */
static int hf_gsm_map_ms_m_CSI = -1;              /* M_CSI */
static int hf_gsm_map_ms_vt_CSI = -1;             /* T_CSI */
static int hf_gsm_map_ms_t_BCSM_CAMEL_TDP_CriteriaList = -1;  /* T_BCSM_CAMEL_TDP_CriteriaList */
static int hf_gsm_map_ms_d_CSI = -1;              /* D_CSI */
static int hf_gsm_map_ms_MT_smsCAMELTDP_CriteriaList_item = -1;  /* MT_smsCAMELTDP_Criteria */
static int hf_gsm_map_ms_sms_TriggerDetectionPoint = -1;  /* SMS_TriggerDetectionPoint */
static int hf_gsm_map_ms_tpdu_TypeCriterion = -1;  /* TPDU_TypeCriterion */
static int hf_gsm_map_ms_TPDU_TypeCriterion_item = -1;  /* MT_SMS_TPDU_Type */
static int hf_gsm_map_ms_dp_AnalysedInfoCriteriaList = -1;  /* DP_AnalysedInfoCriteriaList */
static int hf_gsm_map_ms_DP_AnalysedInfoCriteriaList_item = -1;  /* DP_AnalysedInfoCriterium */
static int hf_gsm_map_ms_dialledNumber = -1;      /* ISDN_AddressString */
static int hf_gsm_map_ms_defaultCallHandling = -1;  /* DefaultCallHandling */
static int hf_gsm_map_ms_ss_CamelData = -1;       /* SS_CamelData */
static int hf_gsm_map_ms_ss_EventList = -1;       /* SS_EventList */
static int hf_gsm_map_ms_SS_EventList_item = -1;  /* SS_Code */
static int hf_gsm_map_ms_o_BcsmCamelTDPDataList = -1;  /* O_BcsmCamelTDPDataList */
static int hf_gsm_map_ms_csiActive = -1;          /* NULL */
static int hf_gsm_map_ms_O_BcsmCamelTDPDataList_item = -1;  /* O_BcsmCamelTDPData */
static int hf_gsm_map_ms_o_BcsmTriggerDetectionPoint = -1;  /* O_BcsmTriggerDetectionPoint */
static int hf_gsm_map_ms_O_BcsmCamelTDPCriteriaList_item = -1;  /* O_BcsmCamelTDP_Criteria */
static int hf_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList_item = -1;  /* T_BCSM_CAMEL_TDP_Criteria */
static int hf_gsm_map_ms_destinationNumberCriteria = -1;  /* DestinationNumberCriteria */
static int hf_gsm_map_ms_basicServiceCriteria = -1;  /* BasicServiceCriteria */
static int hf_gsm_map_ms_callTypeCriteria = -1;   /* CallTypeCriteria */
static int hf_gsm_map_ms_o_CauseValueCriteria = -1;  /* O_CauseValueCriteria */
static int hf_gsm_map_ms_t_BCSM_TriggerDetectionPoint = -1;  /* T_BcsmTriggerDetectionPoint */
static int hf_gsm_map_ms_t_CauseValueCriteria = -1;  /* T_CauseValueCriteria */
static int hf_gsm_map_ms_matchType = -1;          /* MatchType */
static int hf_gsm_map_ms_destinationNumberList = -1;  /* DestinationNumberList */
static int hf_gsm_map_ms_destinationNumberLengthList = -1;  /* DestinationNumberLengthList */
static int hf_gsm_map_ms_DestinationNumberList_item = -1;  /* ISDN_AddressString */
static int hf_gsm_map_ms_DestinationNumberLengthList_item = -1;  /* INTEGER_1_maxNumOfISDN_AddressDigits */
static int hf_gsm_map_ms_BasicServiceCriteria_item = -1;  /* Ext_BasicServiceCode */
static int hf_gsm_map_ms_O_CauseValueCriteria_item = -1;  /* CauseValue */
static int hf_gsm_map_ms_T_CauseValueCriteria_item = -1;  /* CauseValue */
static int hf_gsm_map_ms_sms_CAMEL_TDP_DataList = -1;  /* SMS_CAMEL_TDP_DataList */
static int hf_gsm_map_ms_SMS_CAMEL_TDP_DataList_item = -1;  /* SMS_CAMEL_TDP_Data */
static int hf_gsm_map_ms_defaultSMS_Handling = -1;  /* DefaultSMS_Handling */
static int hf_gsm_map_ms_mobilityTriggers = -1;   /* MobilityTriggers */
static int hf_gsm_map_ms_MobilityTriggers_item = -1;  /* MM_Code */
static int hf_gsm_map_ms_t_BcsmCamelTDPDataList = -1;  /* T_BcsmCamelTDPDataList */
static int hf_gsm_map_ms_T_BcsmCamelTDPDataList_item = -1;  /* T_BcsmCamelTDPData */
static int hf_gsm_map_ms_t_BcsmTriggerDetectionPoint = -1;  /* T_BcsmTriggerDetectionPoint */
static int hf_gsm_map_ms_ggsn_Address = -1;       /* GSN_Address */
static int hf_gsm_map_ms_ggsn_Number = -1;        /* ISDN_AddressString */
static int hf_gsm_map_ms_mobileNotReachableReason = -1;  /* AbsentSubscriberDiagnosticSM */
static int hf_gsm_map_ms_hlr_List = -1;           /* HLR_List */
static int hf_gsm_map_ms_msNotReachable = -1;     /* NULL */
static int hf_gsm_map_ms_VBSDataList_item = -1;   /* VoiceBroadcastData */
static int hf_gsm_map_ms_VGCSDataList_item = -1;  /* VoiceGroupCallData */
static int hf_gsm_map_ms_groupId = -1;            /* GroupId */
static int hf_gsm_map_ms_additionalSubscriptions = -1;  /* AdditionalSubscriptions */
static int hf_gsm_map_ms_additionalInfo = -1;     /* AdditionalInfo */
static int hf_gsm_map_ms_longGroupId = -1;        /* Long_GroupId */
static int hf_gsm_map_ms_groupid = -1;            /* GroupId */
static int hf_gsm_map_ms_broadcastInitEntitlement = -1;  /* NULL */
static int hf_gsm_map_ms_requestedInfo = -1;      /* RequestedInfo */
static int hf_gsm_map_ms_callPriority = -1;       /* EMLPP_Priority */
static int hf_gsm_map_ms_subscriberInfo = -1;     /* SubscriberInfo */
static int hf_gsm_map_ms_locationInformation = -1;  /* LocationInformation */
static int hf_gsm_map_ms_subscriberState = -1;    /* SubscriberState */
static int hf_gsm_map_ms_locationInformationGPRS = -1;  /* LocationInformationGPRS */
static int hf_gsm_map_ms_ps_SubscriberState = -1;  /* PS_SubscriberState */
static int hf_gsm_map_ms_ms_Classmark2 = -1;      /* MS_Classmark2 */
static int hf_gsm_map_ms_gprs_MS_Class = -1;      /* GPRSMSClass */
static int hf_gsm_map_ms_mnpInfoRes = -1;         /* MNPInfoRes */
static int hf_gsm_map_ms_imsVoiceOverPS_SessionsIndication = -1;  /* IMS_VoiceOverPS_SessionsInd */
static int hf_gsm_map_ms_lastUE_ActivityTime = -1;  /* Time */
static int hf_gsm_map_ms_lastRAT_Type = -1;       /* Used_RAT_Type */
static int hf_gsm_map_ms_eps_SubscriberState = -1;  /* PS_SubscriberState */
static int hf_gsm_map_ms_locationInformationEPS = -1;  /* LocationInformationEPS */
static int hf_gsm_map_ms_routeingNumber = -1;     /* RouteingNumber */
static int hf_gsm_map_ms_numberPortabilityStatus = -1;  /* NumberPortabilityStatus */
static int hf_gsm_map_ms_mSNetworkCapability = -1;  /* MSNetworkCapability */
static int hf_gsm_map_ms_mSRadioAccessCapability = -1;  /* MSRadioAccessCapability */
static int hf_gsm_map_ms_locationInformation_01 = -1;  /* NULL */
static int hf_gsm_map_ms_subscriberState_01 = -1;  /* NULL */
static int hf_gsm_map_ms_currentLocation = -1;    /* NULL */
static int hf_gsm_map_ms_requestedDomain = -1;    /* DomainType */
static int hf_gsm_map_ms_imei_01 = -1;            /* NULL */
static int hf_gsm_map_ms_ms_classmark = -1;       /* NULL */
static int hf_gsm_map_ms_mnpRequestedInfo = -1;   /* NULL */
static int hf_gsm_map_ms_t_adsData = -1;          /* NULL */
static int hf_gsm_map_ms_requestedNodes = -1;     /* RequestedNodes */
static int hf_gsm_map_ms_ageOfLocationInformation = -1;  /* AgeOfLocationInformation */
static int hf_gsm_map_ms_geographicalInformation = -1;  /* GeographicalInformation */
static int hf_gsm_map_ms_vlr_number = -1;         /* ISDN_AddressString */
static int hf_gsm_map_ms_locationNumber = -1;     /* LocationNumber */
static int hf_gsm_map_ms_cellGlobalIdOrServiceAreaIdOrLAI = -1;  /* CellGlobalIdOrServiceAreaIdOrLAI */
static int hf_gsm_map_ms_selectedLSA_Id = -1;     /* LSAIdentity */
static int hf_gsm_map_ms_geodeticInformation = -1;  /* GeodeticInformation */
static int hf_gsm_map_ms_currentLocationRetrieved = -1;  /* NULL */
static int hf_gsm_map_ms_sai_Present = -1;        /* NULL */
static int hf_gsm_map_ms_userCSGInformation = -1;  /* UserCSGInformation */
static int hf_gsm_map_ms_e_utranCellGlobalIdentity = -1;  /* OCTET_STRING_SIZE_7 */
static int hf_gsm_map_ms_trackingAreaIdentity = -1;  /* OCTET_STRING_SIZE_5 */
static int hf_gsm_map_ms_routeingAreaIdentity = -1;  /* RAIdentity */
static int hf_gsm_map_ms_selectedLSAIdentity = -1;  /* LSAIdentity */
static int hf_gsm_map_ms_accessMode = -1;         /* OCTET_STRING_SIZE_1 */
static int hf_gsm_map_ms_cmi = -1;                /* OCTET_STRING_SIZE_1 */
static int hf_gsm_map_ms_assumedIdle = -1;        /* NULL */
static int hf_gsm_map_ms_camelBusy = -1;          /* NULL */
static int hf_gsm_map_ms_netDetNotReachable = -1;  /* NotReachableReason */
static int hf_gsm_map_ms_notProvidedFromVLR = -1;  /* NULL */
static int hf_gsm_map_ms_notProvidedFromSGSNorMME = -1;  /* NULL */
static int hf_gsm_map_ms_ps_Detached = -1;        /* NULL */
static int hf_gsm_map_ms_ps_AttachedNotReachableForPaging = -1;  /* NULL */
static int hf_gsm_map_ms_ps_AttachedReachableForPaging = -1;  /* NULL */
static int hf_gsm_map_ms_ps_PDP_ActiveNotReachableForPaging = -1;  /* PDP_ContextInfoList */
static int hf_gsm_map_ms_ps_PDP_ActiveReachableForPaging = -1;  /* PDP_ContextInfoList */
static int hf_gsm_map_ms_PDP_ContextInfoList_item = -1;  /* PDP_ContextInfo */
static int hf_gsm_map_ms_pdp_ContextIdentifier = -1;  /* ContextId */
static int hf_gsm_map_ms_pdp_ContextActive = -1;  /* NULL */
static int hf_gsm_map_ms_apn_Subscribed = -1;     /* APN */
static int hf_gsm_map_ms_apn_InUse = -1;          /* APN */
static int hf_gsm_map_ms_nsapi = -1;              /* NSAPI */
static int hf_gsm_map_ms_transactionId = -1;      /* TransactionId */
static int hf_gsm_map_ms_teid_ForGnAndGp = -1;    /* TEID */
static int hf_gsm_map_ms_teid_ForIu = -1;         /* TEID */
static int hf_gsm_map_ms_qos_Subscribed_01 = -1;  /* Ext_QoS_Subscribed */
static int hf_gsm_map_ms_qos_Requested = -1;      /* Ext_QoS_Subscribed */
static int hf_gsm_map_ms_qos_Negotiated = -1;     /* Ext_QoS_Subscribed */
static int hf_gsm_map_ms_chargingId = -1;         /* GPRSChargingID */
static int hf_gsm_map_ms_rnc_Address = -1;        /* GSN_Address */
static int hf_gsm_map_ms_qos2_Subscribed = -1;    /* Ext2_QoS_Subscribed */
static int hf_gsm_map_ms_qos2_Requested = -1;     /* Ext2_QoS_Subscribed */
static int hf_gsm_map_ms_qos2_Negotiated = -1;    /* Ext2_QoS_Subscribed */
static int hf_gsm_map_ms_qos3_Subscribed = -1;    /* Ext3_QoS_Subscribed */
static int hf_gsm_map_ms_qos3_Requested = -1;     /* Ext3_QoS_Subscribed */
static int hf_gsm_map_ms_qos3_Negotiated = -1;    /* Ext3_QoS_Subscribed */
static int hf_gsm_map_ms_qos4_Subscribed = -1;    /* Ext4_QoS_Subscribed */
static int hf_gsm_map_ms_qos4_Requested = -1;     /* Ext4_QoS_Subscribed */
static int hf_gsm_map_ms_qos4_Negotiated = -1;    /* Ext4_QoS_Subscribed */
static int hf_gsm_map_ms_subscriberIdentity = -1;  /* SubscriberIdentity */
static int hf_gsm_map_ms_requestedSubscriptionInfo = -1;  /* RequestedSubscriptionInfo */
static int hf_gsm_map_ms_callForwardingData = -1;  /* CallForwardingData */
static int hf_gsm_map_ms_callBarringData = -1;    /* CallBarringData */
static int hf_gsm_map_ms_odb_Info = -1;           /* ODB_Info */
static int hf_gsm_map_ms_camel_SubscriptionInfo = -1;  /* CAMEL_SubscriptionInfo */
static int hf_gsm_map_ms_supportedVLR_CAMEL_Phases = -1;  /* SupportedCamelPhases */
static int hf_gsm_map_ms_supportedSGSN_CAMEL_Phases = -1;  /* SupportedCamelPhases */
static int hf_gsm_map_ms_offeredCamel4CSIsInVLR = -1;  /* OfferedCamel4CSIs */
static int hf_gsm_map_ms_offeredCamel4CSIsInSGSN = -1;  /* OfferedCamel4CSIs */
static int hf_gsm_map_ms_msisdn_BS_List = -1;     /* MSISDN_BS_List */
static int hf_gsm_map_ms_csg_SubscriptionDataList = -1;  /* CSG_SubscriptionDataList */
static int hf_gsm_map_ms_requestedSS_Info = -1;   /* SS_ForBS_Code */
static int hf_gsm_map_ms_odb = -1;                /* NULL */
static int hf_gsm_map_ms_requestedCAMEL_SubscriptionInfo = -1;  /* RequestedCAMEL_SubscriptionInfo */
static int hf_gsm_map_ms_supportedVLR_CAMEL_Phases_01 = -1;  /* NULL */
static int hf_gsm_map_ms_supportedSGSN_CAMEL_Phases_01 = -1;  /* NULL */
static int hf_gsm_map_ms_additionalRequestedCAMEL_SubscriptionInfo = -1;  /* AdditionalRequestedCAMEL_SubscriptionInfo */
static int hf_gsm_map_ms_msisdn_BS_List_01 = -1;  /* NULL */
static int hf_gsm_map_ms_csg_SubscriptionDataRequested = -1;  /* NULL */
static int hf_gsm_map_ms_MSISDN_BS_List_item = -1;  /* MSISDN_BS */
static int hf_gsm_map_ms_password = -1;           /* Password */
static int hf_gsm_map_ms_wrongPasswordAttemptsCounter = -1;  /* WrongPasswordAttemptsCounter */
static int hf_gsm_map_ms_t_CSI = -1;              /* T_CSI */
static int hf_gsm_map_ms_vt_BCSM_CAMEL_TDP_CriteriaList = -1;  /* T_BCSM_CAMEL_TDP_CriteriaList */
static int hf_gsm_map_ms_tif_CSI_NotificationToCSE = -1;  /* NULL */
static int hf_gsm_map_ms_specificCSIDeletedList = -1;  /* SpecificCSI_Withdraw */
static int hf_gsm_map_ms_o_IM_CSI = -1;           /* O_CSI */
static int hf_gsm_map_ms_o_IM_BcsmCamelTDP_CriteriaList = -1;  /* O_BcsmCamelTDPCriteriaList */
static int hf_gsm_map_ms_d_IM_CSI = -1;           /* D_CSI */
static int hf_gsm_map_ms_vt_IM_CSI = -1;          /* T_CSI */
static int hf_gsm_map_ms_vt_IM_BCSM_CAMEL_TDP_CriteriaList = -1;  /* T_BCSM_CAMEL_TDP_CriteriaList */
static int hf_gsm_map_ms_modificationRequestFor_CF_Info = -1;  /* ModificationRequestFor_CF_Info */
static int hf_gsm_map_ms_modificationRequestFor_CB_Info = -1;  /* ModificationRequestFor_CB_Info */
static int hf_gsm_map_ms_modificationRequestFor_CSI = -1;  /* ModificationRequestFor_CSI */
static int hf_gsm_map_ms_modificationRequestFor_ODB_data = -1;  /* ModificationRequestFor_ODB_data */
static int hf_gsm_map_ms_modificationRequestFor_IP_SM_GW_Data = -1;  /* ModificationRequestFor_IP_SM_GW_Data */
static int hf_gsm_map_ms_activationRequestForUE_reachability = -1;  /* ServingNode */
static int hf_gsm_map_ms_modificationRequestFor_CSG = -1;  /* ModificationRequestFor_CSG */
static int hf_gsm_map_ms_modifyNotificationToCSE = -1;  /* ModificationInstruction */
static int hf_gsm_map_ms_ss_InfoFor_CSE = -1;     /* Ext_SS_InfoFor_CSE */
static int hf_gsm_map_ms_forwardedToNumber_01 = -1;  /* AddressString */
static int hf_gsm_map_ms_odb_data = -1;           /* ODB_Data */
static int hf_gsm_map_ms_requestedCamel_SubscriptionInfo = -1;  /* RequestedCAMEL_SubscriptionInfo */
static int hf_gsm_map_ms_modifyCSI_State = -1;    /* ModificationInstruction */
static int hf_gsm_map_ms_modifyRegistrationStatus = -1;  /* ModificationInstruction */
static int hf_gsm_map_ms_forwardingInfoFor_CSE = -1;  /* Ext_ForwardingInfoFor_CSE */
static int hf_gsm_map_ms_callBarringInfoFor_CSE = -1;  /* Ext_CallBarringInfoFor_CSE */
static int hf_gsm_map_ms_allInformationSent = -1;  /* NULL */
static int hf_gsm_map_ms_ue_reachable = -1;       /* ServingNode */
static int hf_gsm_map_ms_eventMet = -1;           /* MM_Code */
static int hf_gsm_map_ms_supportedCAMELPhases = -1;  /* SupportedCamelPhases */
static int hf_gsm_map_ms_offeredCamel4Functionalities = -1;  /* OfferedCamel4Functionalities */
static int hf_gsm_map_ms_naea_PreferredCI = -1;   /* NAEA_PreferredCI */
static int hf_gsm_map_ms_gprsSubscriptionData = -1;  /* GPRSSubscriptionData */
static int hf_gsm_map_ms_roamingRestrictedInSgsnDueToUnsupportedFeature = -1;  /* NULL */
static int hf_gsm_map_ms_networkAccessMode = -1;  /* NetworkAccessMode */
static int hf_gsm_map_ms_lsaInformation = -1;     /* LSAInformation */
static int hf_gsm_map_ms_lmu_Indicator = -1;      /* NULL */
static int hf_gsm_map_ms_lcsInformation = -1;     /* LCSInformation */
static int hf_gsm_map_ms_istAlertTimer = -1;      /* IST_AlertTimerValue */
static int hf_gsm_map_ms_superChargerSupportedInHLR = -1;  /* AgeIndicator */
static int hf_gsm_map_ms_mc_SS_Info = -1;         /* MC_SS_Info */
static int hf_gsm_map_ms_cs_AllocationRetentionPriority = -1;  /* CS_AllocationRetentionPriority */
static int hf_gsm_map_ms_sgsn_CAMEL_SubscriptionInfo = -1;  /* SGSN_CAMEL_SubscriptionInfo */
static int hf_gsm_map_ms_accessRestrictionData = -1;  /* AccessRestrictionData */
static int hf_gsm_map_ms_ics_Indicator = -1;      /* BOOLEAN */
static int hf_gsm_map_ms_eps_SubscriptionData = -1;  /* EPS_SubscriptionData */
static int hf_gsm_map_ms_ue_ReachabilityRequestIndicator = -1;  /* NULL */
static int hf_gsm_map_ms_mme_Name = -1;           /* DiameterIdentity */
/* named bits */
static int hf_gsm_map_ms_SupportedRAT_Types_utran = -1;
static int hf_gsm_map_ms_SupportedRAT_Types_geran = -1;
static int hf_gsm_map_ms_SupportedRAT_Types_gan = -1;
static int hf_gsm_map_ms_SupportedRAT_Types_i_hspa_evolution = -1;
static int hf_gsm_map_ms_SupportedRAT_Types_e_utran = -1;
static int hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet1 = -1;
static int hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet2 = -1;
static int hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet3 = -1;
static int hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet4 = -1;
static int hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet5 = -1;
static int hf_gsm_map_ms_ISR_Information_updateMME = -1;
static int hf_gsm_map_ms_ISR_Information_cancelSGSN = -1;
static int hf_gsm_map_ms_ISR_Information_initialAttachIndicator = -1;
static int hf_gsm_map_ms_SupportedFeatures_odb_all_apn = -1;
static int hf_gsm_map_ms_SupportedFeatures_odb_HPLMN_APN = -1;
static int hf_gsm_map_ms_SupportedFeatures_odb_VPLMN_APN = -1;
static int hf_gsm_map_ms_SupportedFeatures_odb_all_og = -1;
static int hf_gsm_map_ms_SupportedFeatures_odb_all_international_og = -1;
static int hf_gsm_map_ms_SupportedFeatures_odb_all_int_og_not_to_HPLMN_country = -1;
static int hf_gsm_map_ms_SupportedFeatures_odb_all_interzonal_og = -1;
static int hf_gsm_map_ms_SupportedFeatures_odb_all_interzonal_og_not_to_HPLMN_country = -1;
static int hf_gsm_map_ms_SupportedFeatures_odb_all_interzonal_og_and_internat_og_not_to_HPLMN_country = -1;
static int hf_gsm_map_ms_SupportedFeatures_regSub = -1;
static int hf_gsm_map_ms_SupportedFeatures_trace = -1;
static int hf_gsm_map_ms_SupportedFeatures_lcs_all_PrivExcep = -1;
static int hf_gsm_map_ms_SupportedFeatures_lcs_universal = -1;
static int hf_gsm_map_ms_SupportedFeatures_lcs_CallSessionRelated = -1;
static int hf_gsm_map_ms_SupportedFeatures_lcs_CallSessionUnrelated = -1;
static int hf_gsm_map_ms_SupportedFeatures_lcs_PLMN_operator = -1;
static int hf_gsm_map_ms_SupportedFeatures_lcs_ServiceType = -1;
static int hf_gsm_map_ms_SupportedFeatures_lcs_all_MOLR_SS = -1;
static int hf_gsm_map_ms_SupportedFeatures_lcs_basicSelfLocation = -1;
static int hf_gsm_map_ms_SupportedFeatures_lcs_autonomousSelfLocation = -1;
static int hf_gsm_map_ms_SupportedFeatures_lcs_transferToThirdParty = -1;
static int hf_gsm_map_ms_SupportedFeatures_sm_mo_pp = -1;
static int hf_gsm_map_ms_SupportedFeatures_barring_OutgoingCalls = -1;
static int hf_gsm_map_ms_SupportedFeatures_baoc = -1;
static int hf_gsm_map_ms_SupportedFeatures_boic = -1;
static int hf_gsm_map_ms_SupportedFeatures_boicExHC = -1;
static int hf_gsm_map_ms_RequestedEquipmentInfo_equipmentStatus = -1;
static int hf_gsm_map_ms_RequestedEquipmentInfo_bmuef = -1;
static int hf_gsm_map_ms_AccessRestrictionData_utranNotAllowed = -1;
static int hf_gsm_map_ms_AccessRestrictionData_geranNotAllowed = -1;
static int hf_gsm_map_ms_AccessRestrictionData_ganNotAllowed = -1;
static int hf_gsm_map_ms_AccessRestrictionData_i_hspa_evolutionNotAllowed = -1;
static int hf_gsm_map_ms_AccessRestrictionData_e_utranNotAllowed = -1;
static int hf_gsm_map_ms_AccessRestrictionData_ho_toNon3GPP_AccessNotAllowed = -1;
static int hf_gsm_map_ms_ODB_GeneralData_allOG_CallsBarred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_internationalOGCallsBarred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_internationalOGCallsNotToHPLMN_CountryBarred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_interzonalOGCallsBarred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_interzonalOGCallsNotToHPLMN_CountryBarred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_interzonalOGCallsAndInternationalOGCallsNotToHPLMN_CountryBarred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_premiumRateInformationOGCallsBarred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_premiumRateEntertainementOGCallsBarred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_ss_AccessBarred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_allECT_Barred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_chargeableECT_Barred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_internationalECT_Barred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_interzonalECT_Barred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_doublyChargeableECT_Barred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_multipleECT_Barred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_allPacketOrientedServicesBarred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_roamerAccessToHPLMN_AP_Barred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_roamerAccessToVPLMN_AP_Barred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMNOG_CallsBarred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_allIC_CallsBarred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMNIC_CallsBarred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMNICountryIC_CallsBarred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMN_Barred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMN_CountryBarred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_registrationAllCF_Barred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_registrationCFNotToHPLMN_Barred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_registrationInterzonalCF_Barred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_registrationInterzonalCFNotToHPLMN_Barred = -1;
static int hf_gsm_map_ms_ODB_GeneralData_registrationInternationalCF_Barred = -1;
static int hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType1 = -1;
static int hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType2 = -1;
static int hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType3 = -1;
static int hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType4 = -1;
static int hf_gsm_map_ms_SpecificCSI_Withdraw_o_csi = -1;
static int hf_gsm_map_ms_SpecificCSI_Withdraw_ss_csi = -1;
static int hf_gsm_map_ms_SpecificCSI_Withdraw_tif_csi = -1;
static int hf_gsm_map_ms_SpecificCSI_Withdraw_d_csi = -1;
static int hf_gsm_map_ms_SpecificCSI_Withdraw_vt_csi = -1;
static int hf_gsm_map_ms_SpecificCSI_Withdraw_mo_sms_csi = -1;
static int hf_gsm_map_ms_SpecificCSI_Withdraw_m_csi = -1;
static int hf_gsm_map_ms_SpecificCSI_Withdraw_gprs_csi = -1;
static int hf_gsm_map_ms_SpecificCSI_Withdraw_t_csi = -1;
static int hf_gsm_map_ms_SpecificCSI_Withdraw_mt_sms_csi = -1;
static int hf_gsm_map_ms_SpecificCSI_Withdraw_mg_csi = -1;
static int hf_gsm_map_ms_SpecificCSI_Withdraw_o_IM_CSI = -1;
static int hf_gsm_map_ms_SpecificCSI_Withdraw_d_IM_CSI = -1;
static int hf_gsm_map_ms_SpecificCSI_Withdraw_vt_IM_CSI = -1;
static int hf_gsm_map_ms_SupportedCamelPhases_phase1 = -1;
static int hf_gsm_map_ms_SupportedCamelPhases_phase2 = -1;
static int hf_gsm_map_ms_SupportedCamelPhases_phase3 = -1;
static int hf_gsm_map_ms_SupportedCamelPhases_phase4 = -1;
static int hf_gsm_map_ms_OfferedCamel4CSIs_o_csi = -1;
static int hf_gsm_map_ms_OfferedCamel4CSIs_d_csi = -1;
static int hf_gsm_map_ms_OfferedCamel4CSIs_vt_csi = -1;
static int hf_gsm_map_ms_OfferedCamel4CSIs_t_csi = -1;
static int hf_gsm_map_ms_OfferedCamel4CSIs_mt_sms_csi = -1;
static int hf_gsm_map_ms_OfferedCamel4CSIs_mg_csi = -1;
static int hf_gsm_map_ms_OfferedCamel4CSIs_psi_enhancements = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_initiateCallAttempt = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_splitLeg = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_moveLeg = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_disconnectLeg = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_entityReleased = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_dfc_WithArgument = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_playTone = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_dtmf_MidCall = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_chargingIndicator = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_alertingDP = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_locationAtAlerting = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_changeOfPositionDP = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_or_Interactions = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_warningToneEnhancements = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_cf_Enhancements = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_subscribedEnhancedDialledServices = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_servingNetworkEnhancedDialledServices = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_criteriaForChangeOfPositionDP = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_serviceChangeDP = -1;
static int hf_gsm_map_ms_OfferedCamel4Functionalities_collectInformation = -1;
static int hf_gsm_map_ms_AdditionalSubscriptions_privilegedUplinkRequest = -1;
static int hf_gsm_map_ms_AdditionalSubscriptions_emergencyUplinkRequest = -1;
static int hf_gsm_map_ms_AdditionalSubscriptions_emergencyReset = -1;
static int hf_gsm_map_ms_RequestedNodes_mme = -1;
static int hf_gsm_map_ms_RequestedNodes_sgsn = -1;
static int hf_gsm_map_ms_ServingNode_mme = -1;

/* --- Module MAP-CH-DataTypes --- --- ---                                    */

static int hf_gsm_map_ch_cug_Interlock = -1;      /* CUG_Interlock */
static int hf_gsm_map_ch_cug_OutgoingAccess = -1;  /* NULL */
static int hf_gsm_map_ch_extensionContainer = -1;  /* ExtensionContainer */
static int hf_gsm_map_ch_msisdn = -1;             /* ISDN_AddressString */
static int hf_gsm_map_ch_cug_CheckInfo = -1;      /* CUG_CheckInfo */
static int hf_gsm_map_ch_numberOfForwarding = -1;  /* NumberOfForwarding */
static int hf_gsm_map_ch_interrogationType = -1;  /* InterrogationType */
static int hf_gsm_map_ch_or_Interrogation = -1;   /* NULL */
static int hf_gsm_map_ch_or_Capability = -1;      /* OR_Phase */
static int hf_gsm_map_ch_gmsc_OrGsmSCF_Address = -1;  /* ISDN_AddressString */
static int hf_gsm_map_ch_callReferenceNumber = -1;  /* CallReferenceNumber */
static int hf_gsm_map_ch_forwardingReason = -1;   /* ForwardingReason */
static int hf_gsm_map_ch_basicServiceGroup = -1;  /* Ext_BasicServiceCode */
static int hf_gsm_map_ch_networkSignalInfo = -1;  /* ExternalSignalInfo */
static int hf_gsm_map_ch_camelInfo = -1;          /* CamelInfo */
static int hf_gsm_map_ch_suppressionOfAnnouncement = -1;  /* SuppressionOfAnnouncement */
static int hf_gsm_map_ch_alertingPattern = -1;    /* AlertingPattern */
static int hf_gsm_map_ch_ccbs_Call = -1;          /* NULL */
static int hf_gsm_map_ch_supportedCCBS_Phase = -1;  /* SupportedCCBS_Phase */
static int hf_gsm_map_ch_additionalSignalInfo = -1;  /* Ext_ExternalSignalInfo */
static int hf_gsm_map_ch_istSupportIndicator = -1;  /* IST_SupportIndicator */
static int hf_gsm_map_ch_pre_pagingSupported = -1;  /* NULL */
static int hf_gsm_map_ch_callDiversionTreatmentIndicator = -1;  /* CallDiversionTreatmentIndicator */
static int hf_gsm_map_ch_longFTN_Supported = -1;  /* NULL */
static int hf_gsm_map_ch_suppress_VT_CSI = -1;    /* NULL */
static int hf_gsm_map_ch_suppressIncomingCallBarring = -1;  /* NULL */
static int hf_gsm_map_ch_gsmSCF_InitiatedCall = -1;  /* NULL */
static int hf_gsm_map_ch_basicServiceGroup2 = -1;  /* Ext_BasicServiceCode */
static int hf_gsm_map_ch_networkSignalInfo2 = -1;  /* ExternalSignalInfo */
static int hf_gsm_map_ch_suppressMTSS = -1;       /* SuppressMTSS */
static int hf_gsm_map_ch_mtRoamingRetrySupported = -1;  /* NULL */
static int hf_gsm_map_ch_callPriority = -1;       /* EMLPP_Priority */
static int hf_gsm_map_ch_imsi = -1;               /* IMSI */
static int hf_gsm_map_ch_extendedRoutingInfo = -1;  /* ExtendedRoutingInfo */
static int hf_gsm_map_ch_cugSubscriptionFlag = -1;  /* NULL */
static int hf_gsm_map_ch_subscriberInfo = -1;     /* SubscriberInfo */
static int hf_gsm_map_ch_ss_List = -1;            /* SS_List */
static int hf_gsm_map_ch_basicService = -1;       /* Ext_BasicServiceCode */
static int hf_gsm_map_ch_forwardingInterrogationRequired = -1;  /* NULL */
static int hf_gsm_map_ch_vmsc_Address = -1;       /* ISDN_AddressString */
static int hf_gsm_map_ch_naea_PreferredCI = -1;   /* NAEA_PreferredCI */
static int hf_gsm_map_ch_ccbs_Indicators = -1;    /* CCBS_Indicators */
static int hf_gsm_map_ch_numberPortabilityStatus = -1;  /* NumberPortabilityStatus */
static int hf_gsm_map_ch_istAlertTimer = -1;      /* IST_AlertTimerValue */
static int hf_gsm_map_ch_supportedCamelPhasesInVMSC = -1;  /* SupportedCamelPhases */
static int hf_gsm_map_ch_offeredCamel4CSIsInVMSC = -1;  /* OfferedCamel4CSIs */
static int hf_gsm_map_ch_routingInfo2 = -1;       /* RoutingInfo */
static int hf_gsm_map_ch_ss_List2 = -1;           /* SS_List */
static int hf_gsm_map_ch_basicService2 = -1;      /* Ext_BasicServiceCode */
static int hf_gsm_map_ch_allowedServices = -1;    /* AllowedServices */
static int hf_gsm_map_ch_unavailabilityCause = -1;  /* UnavailabilityCause */
static int hf_gsm_map_ch_releaseResourcesSupported = -1;  /* NULL */
static int hf_gsm_map_ch_gsm_BearerCapability = -1;  /* ExternalSignalInfo */
static int hf_gsm_map_ch_ccbs_Possible = -1;      /* NULL */
static int hf_gsm_map_ch_keepCCBS_CallIndicator = -1;  /* NULL */
static int hf_gsm_map_ch_roamingNumber = -1;      /* ISDN_AddressString */
static int hf_gsm_map_ch_forwardingData = -1;     /* ForwardingData */
static int hf_gsm_map_ch_forwardedToNumber = -1;  /* ISDN_AddressString */
static int hf_gsm_map_ch_forwardedToSubaddress = -1;  /* ISDN_SubaddressString */
static int hf_gsm_map_ch_forwardingOptions = -1;  /* ForwardingOptions */
static int hf_gsm_map_ch_longForwardedToNumber = -1;  /* FTN_AddressString */
static int hf_gsm_map_ch_msc_Number = -1;         /* ISDN_AddressString */
static int hf_gsm_map_ch_lmsi = -1;               /* LMSI */
static int hf_gsm_map_ch_gmsc_Address = -1;       /* ISDN_AddressString */
static int hf_gsm_map_ch_supportedCamelPhasesInInterrogatingNode = -1;  /* SupportedCamelPhases */
static int hf_gsm_map_ch_orNotSupportedInGMSC = -1;  /* NULL */
static int hf_gsm_map_ch_offeredCamel4CSIsInInterrogatingNode = -1;  /* OfferedCamel4CSIs */
static int hf_gsm_map_ch_pagingArea = -1;         /* PagingArea */
static int hf_gsm_map_ch_o_CSI = -1;              /* O_CSI */
static int hf_gsm_map_ch_uu_Data = -1;            /* UU_Data */
static int hf_gsm_map_ch_allInformationSent = -1;  /* NULL */
static int hf_gsm_map_ch_d_csi = -1;              /* D_CSI */
static int hf_gsm_map_ch_o_BcsmCamelTDPCriteriaList = -1;  /* O_BcsmCamelTDPCriteriaList */
static int hf_gsm_map_ch_mtRoamingRetry = -1;     /* NULL */
static int hf_gsm_map_ch_uuIndicator = -1;        /* UUIndicator */
static int hf_gsm_map_ch_uui = -1;                /* UUI */
static int hf_gsm_map_ch_uusCFInteraction = -1;   /* NULL */
static int hf_gsm_map_ch_supportedCamelPhases = -1;  /* SupportedCamelPhases */
static int hf_gsm_map_ch_suppress_T_CSI = -1;     /* NULL */
static int hf_gsm_map_ch_offeredCamel4CSIs = -1;  /* OfferedCamel4CSIs */
static int hf_gsm_map_ch_routingInfo = -1;        /* RoutingInfo */
static int hf_gsm_map_ch_camelRoutingInfo = -1;   /* CamelRoutingInfo */
static int hf_gsm_map_ch_gmscCamelSubscriptionInfo = -1;  /* GmscCamelSubscriptionInfo */
static int hf_gsm_map_ch_t_CSI = -1;              /* T_CSI */
static int hf_gsm_map_ch_o_BcsmCamelTDP_CriteriaList = -1;  /* O_BcsmCamelTDPCriteriaList */
static int hf_gsm_map_ch_t_BCSM_CAMEL_TDP_CriteriaList = -1;  /* T_BCSM_CAMEL_TDP_CriteriaList */
static int hf_gsm_map_ch_ccbs_Monitoring = -1;    /* ReportingState */
static int hf_gsm_map_ch_ccbs_SubscriberStatus = -1;  /* CCBS_SubscriberStatus */
static int hf_gsm_map_ch_eventReportData = -1;    /* EventReportData */
static int hf_gsm_map_ch_callReportdata = -1;     /* CallReportData */
static int hf_gsm_map_ch_monitoringMode = -1;     /* MonitoringMode */
static int hf_gsm_map_ch_callOutcome = -1;        /* CallOutcome */
static int hf_gsm_map_ch_callInfo = -1;           /* ExternalSignalInfo */
static int hf_gsm_map_ch_ccbs_Feature = -1;       /* CCBS_Feature */
static int hf_gsm_map_ch_translatedB_Number = -1;  /* ISDN_AddressString */
static int hf_gsm_map_ch_replaceB_Number = -1;    /* NULL */
static int hf_gsm_map_ch_ruf_Outcome = -1;        /* RUF_Outcome */
static int hf_gsm_map_ch_istInformationWithdraw = -1;  /* NULL */
static int hf_gsm_map_ch_callTerminationIndicator = -1;  /* CallTerminationIndicator */
static int hf_gsm_map_ch_msrn = -1;               /* ISDN_AddressString */
/* named bits */
static int hf_gsm_map_ch_SuppressMTSS_suppressCUG = -1;
static int hf_gsm_map_ch_SuppressMTSS_suppressCCBS = -1;
static int hf_gsm_map_ch_AllowedServices_firstServiceAllowed = -1;
static int hf_gsm_map_ch_AllowedServices_secondServiceAllowed = -1;

/* --- Module MAP-LCS-DataTypes --- --- ---                                   */

static int hf_gsm_map_lcs_gsm_map_lcs_LCS_ClientID_PDU = -1;  /* LCS_ClientID */
static int hf_gsm_map_lcs_mlcNumber = -1;         /* ISDN_AddressString */
static int hf_gsm_map_lcs_targetMS = -1;          /* SubscriberIdentity */
static int hf_gsm_map_lcs_extensionContainer = -1;  /* ExtensionContainer */
static int hf_gsm_map_lcs_lcsLocationInfo = -1;   /* LCSLocationInfo */
static int hf_gsm_map_lcs_v_gmlc_Address = -1;    /* GSN_Address */
static int hf_gsm_map_lcs_h_gmlc_Address = -1;    /* GSN_Address */
static int hf_gsm_map_lcs_ppr_Address = -1;       /* GSN_Address */
static int hf_gsm_map_lcs_additional_v_gmlc_Address = -1;  /* GSN_Address */
static int hf_gsm_map_lcs_networkNode_Number = -1;  /* ISDN_AddressString */
static int hf_gsm_map_lcs_lmsi = -1;              /* LMSI */
static int hf_gsm_map_lcs_gprsNodeIndicator = -1;  /* NULL */
static int hf_gsm_map_lcs_additional_Number = -1;  /* Additional_Number */
static int hf_gsm_map_lcs_supportedLCS_CapabilitySets = -1;  /* SupportedLCS_CapabilitySets */
static int hf_gsm_map_lcs_additional_LCS_CapabilitySets = -1;  /* SupportedLCS_CapabilitySets */
static int hf_gsm_map_lcs_mme_Name = -1;          /* DiameterIdentity */
static int hf_gsm_map_lcs_aaa_Server_Name = -1;   /* DiameterIdentity */
static int hf_gsm_map_lcs_locationType = -1;      /* LocationType */
static int hf_gsm_map_lcs_mlc_Number = -1;        /* ISDN_AddressString */
static int hf_gsm_map_lcs_lcs_ClientID = -1;      /* LCS_ClientID */
static int hf_gsm_map_lcs_privacyOverride = -1;   /* NULL */
static int hf_gsm_map_lcs_imsi = -1;              /* IMSI */
static int hf_gsm_map_lcs_msisdn = -1;            /* ISDN_AddressString */
static int hf_gsm_map_lcs_imei = -1;              /* IMEI */
static int hf_gsm_map_lcs_lcs_Priority = -1;      /* LCS_Priority */
static int hf_gsm_map_lcs_lcs_QoS = -1;           /* LCS_QoS */
static int hf_gsm_map_lcs_supportedGADShapes = -1;  /* SupportedGADShapes */
static int hf_gsm_map_lcs_lcs_ReferenceNumber = -1;  /* LCS_ReferenceNumber */
static int hf_gsm_map_lcs_lcsServiceTypeID = -1;  /* LCSServiceTypeID */
static int hf_gsm_map_lcs_lcsCodeword = -1;       /* LCSCodeword */
static int hf_gsm_map_lcs_lcs_PrivacyCheck = -1;  /* LCS_PrivacyCheck */
static int hf_gsm_map_lcs_areaEventInfo = -1;     /* AreaEventInfo */
static int hf_gsm_map_lcs_mo_lrShortCircuitIndicator = -1;  /* NULL */
static int hf_gsm_map_lcs_periodicLDRInfo = -1;   /* PeriodicLDRInfo */
static int hf_gsm_map_lcs_reportingPLMNList = -1;  /* ReportingPLMNList */
static int hf_gsm_map_lcs_locationEstimateType = -1;  /* LocationEstimateType */
static int hf_gsm_map_lcs_deferredLocationEventType = -1;  /* DeferredLocationEventType */
static int hf_gsm_map_lcs_lcsClientType = -1;     /* LCSClientType */
static int hf_gsm_map_lcs_lcsClientExternalID = -1;  /* LCSClientExternalID */
static int hf_gsm_map_lcs_lcsClientDialedByMS = -1;  /* AddressString */
static int hf_gsm_map_lcs_lcsClientInternalID = -1;  /* LCSClientInternalID */
static int hf_gsm_map_lcs_lcsClientName = -1;     /* LCSClientName */
static int hf_gsm_map_lcs_lcsAPN = -1;            /* APN */
static int hf_gsm_map_lcs_lcsRequestorID = -1;    /* LCSRequestorID */
static int hf_gsm_map_lcs_dataCodingScheme = -1;  /* USSD_DataCodingScheme */
static int hf_gsm_map_lcs_nameString = -1;        /* NameString */
static int hf_gsm_map_lcs_lcs_FormatIndicator = -1;  /* LCS_FormatIndicator */
static int hf_gsm_map_lcs_requestorIDString = -1;  /* RequestorIDString */
static int hf_gsm_map_lcs_horizontal_accuracy = -1;  /* Horizontal_Accuracy */
static int hf_gsm_map_lcs_verticalCoordinateRequest = -1;  /* NULL */
static int hf_gsm_map_lcs_vertical_accuracy = -1;  /* Vertical_Accuracy */
static int hf_gsm_map_lcs_responseTime = -1;      /* ResponseTime */
static int hf_gsm_map_lcs_velocityRequest = -1;   /* NULL */
static int hf_gsm_map_lcs_responseTimeCategory = -1;  /* ResponseTimeCategory */
static int hf_gsm_map_lcs_lcsCodewordString = -1;  /* LCSCodewordString */
static int hf_gsm_map_lcs_callSessionUnrelated = -1;  /* PrivacyCheckRelatedAction */
static int hf_gsm_map_lcs_callSessionRelated = -1;  /* PrivacyCheckRelatedAction */
static int hf_gsm_map_lcs_areaDefinition = -1;    /* AreaDefinition */
static int hf_gsm_map_lcs_occurrenceInfo = -1;    /* OccurrenceInfo */
static int hf_gsm_map_lcs_intervalTime = -1;      /* IntervalTime */
static int hf_gsm_map_lcs_areaList = -1;          /* AreaList */
static int hf_gsm_map_lcs_AreaList_item = -1;     /* Area */
static int hf_gsm_map_lcs_areaType = -1;          /* AreaType */
static int hf_gsm_map_lcs_areaIdentification = -1;  /* AreaIdentification */
static int hf_gsm_map_lcs_reportingAmount = -1;   /* ReportingAmount */
static int hf_gsm_map_lcs_reportingInterval = -1;  /* ReportingInterval */
static int hf_gsm_map_lcs_plmn_ListPrioritized = -1;  /* NULL */
static int hf_gsm_map_lcs_plmn_List = -1;         /* PLMNList */
static int hf_gsm_map_lcs_PLMNList_item = -1;     /* ReportingPLMN */
static int hf_gsm_map_lcs_plmn_Id = -1;           /* PLMN_Id */
static int hf_gsm_map_lcs_ran_Technology = -1;    /* RAN_Technology */
static int hf_gsm_map_lcs_ran_PeriodicLocationSupport = -1;  /* NULL */
static int hf_gsm_map_lcs_locationEstimate = -1;  /* Ext_GeographicalInformation */
static int hf_gsm_map_lcs_ageOfLocationEstimate = -1;  /* AgeOfLocationInformation */
static int hf_gsm_map_lcs_add_LocationEstimate = -1;  /* Add_GeographicalInformation */
static int hf_gsm_map_lcs_deferredmt_lrResponseIndicator = -1;  /* NULL */
static int hf_gsm_map_lcs_geranPositioningData = -1;  /* PositioningDataInformation */
static int hf_gsm_map_lcs_utranPositioningData = -1;  /* UtranPositioningDataInfo */
static int hf_gsm_map_lcs_cellIdOrSai = -1;       /* CellGlobalIdOrServiceAreaIdOrLAI */
static int hf_gsm_map_lcs_sai_Present = -1;       /* NULL */
static int hf_gsm_map_lcs_accuracyFulfilmentIndicator = -1;  /* AccuracyFulfilmentIndicator */
static int hf_gsm_map_lcs_velocityEstimate = -1;  /* VelocityEstimate */
static int hf_gsm_map_lcs_geranGANSSpositioningData = -1;  /* GeranGANSSpositioningData */
static int hf_gsm_map_lcs_utranGANSSpositioningData = -1;  /* UtranGANSSpositioningData */
static int hf_gsm_map_lcs_targetServingNodeForHandover = -1;  /* ServingNodeAddress */
static int hf_gsm_map_lcs_lcs_Event = -1;         /* LCS_Event */
static int hf_gsm_map_lcs_na_ESRD = -1;           /* ISDN_AddressString */
static int hf_gsm_map_lcs_na_ESRK = -1;           /* ISDN_AddressString */
static int hf_gsm_map_lcs_slr_ArgExtensionContainer = -1;  /* SLR_ArgExtensionContainer */
static int hf_gsm_map_lcs_deferredmt_lrData = -1;  /* Deferredmt_lrData */
static int hf_gsm_map_lcs_pseudonymIndicator = -1;  /* NULL */
static int hf_gsm_map_lcs_sequenceNumber = -1;    /* SequenceNumber */
static int hf_gsm_map_lcs_terminationCause = -1;  /* TerminationCause */
static int hf_gsm_map_lcs_msc_Number = -1;        /* ISDN_AddressString */
static int hf_gsm_map_lcs_sgsn_Number = -1;       /* ISDN_AddressString */
static int hf_gsm_map_lcs_mme_Number = -1;        /* DiameterIdentity */
/* named bits */
static int hf_gsm_map_lcs_DeferredLocationEventType_msAvailable = -1;
static int hf_gsm_map_lcs_DeferredLocationEventType_enteringIntoArea = -1;
static int hf_gsm_map_lcs_DeferredLocationEventType_leavingFromArea = -1;
static int hf_gsm_map_lcs_DeferredLocationEventType_beingInsideArea = -1;
static int hf_gsm_map_lcs_DeferredLocationEventType_periodicLDR = -1;
static int hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPoint = -1;
static int hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithUncertaintyCircle = -1;
static int hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithUncertaintyEllipse = -1;
static int hf_gsm_map_lcs_SupportedGADShapes_polygon = -1;
static int hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithAltitude = -1;
static int hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithAltitudeAndUncertaintyElipsoid = -1;
static int hf_gsm_map_lcs_SupportedGADShapes_ellipsoidArc = -1;

/* --- Module MAP-GR-DataTypes --- --- ---                                    */

static int hf_gsm_map_gr_teleservice = -1;        /* Ext_TeleserviceCode */
static int hf_gsm_map_gr_asciCallReference = -1;  /* ASCI_CallReference */
static int hf_gsm_map_gr_codec_Info = -1;         /* CODEC_Info */
static int hf_gsm_map_gr_cipheringAlgorithm = -1;  /* CipheringAlgorithm */
static int hf_gsm_map_gr_groupKeyNumber_Vk_Id = -1;  /* GroupKeyNumber */
static int hf_gsm_map_gr_groupKey = -1;           /* Kc */
static int hf_gsm_map_gr_priority = -1;           /* EMLPP_Priority */
static int hf_gsm_map_gr_uplinkFree = -1;         /* NULL */
static int hf_gsm_map_gr_extensionContainer = -1;  /* ExtensionContainer */
static int hf_gsm_map_gr_vstk = -1;               /* VSTK */
static int hf_gsm_map_gr_vstk_rand = -1;          /* VSTK_RAND */
static int hf_gsm_map_gr_talkerChannelParameter = -1;  /* NULL */
static int hf_gsm_map_gr_uplinkReplyIndicator = -1;  /* NULL */
static int hf_gsm_map_gr_groupCallNumber = -1;    /* ISDN_AddressString */
static int hf_gsm_map_gr_imsi = -1;               /* IMSI */
static int hf_gsm_map_gr_talkerPriority = -1;     /* TalkerPriority */
static int hf_gsm_map_gr_additionalInfo = -1;     /* AdditionalInfo */
static int hf_gsm_map_gr_uplinkRequestAck = -1;   /* NULL */
static int hf_gsm_map_gr_uplinkReleaseIndication = -1;  /* NULL */
static int hf_gsm_map_gr_uplinkRejectCommand = -1;  /* NULL */
static int hf_gsm_map_gr_uplinkSeizedCommand = -1;  /* NULL */
static int hf_gsm_map_gr_uplinkReleaseCommand = -1;  /* NULL */
static int hf_gsm_map_gr_stateAttributes = -1;    /* StateAttributes */
static int hf_gsm_map_gr_emergencyModeResetCommandFlag = -1;  /* NULL */
static int hf_gsm_map_gr_sm_RP_UI = -1;           /* SignalInfo */
static int hf_gsm_map_gr_an_APDU = -1;            /* AccessNetworkSignalInfo */
static int hf_gsm_map_gr_uplinkRequest = -1;      /* NULL */
static int hf_gsm_map_gr_releaseGroupCall = -1;   /* NULL */
static int hf_gsm_map_gr_downlinkAttached = -1;   /* NULL */
static int hf_gsm_map_gr_uplinkAttached = -1;     /* NULL */
static int hf_gsm_map_gr_dualCommunication = -1;  /* NULL */
static int hf_gsm_map_gr_callOriginator = -1;     /* NULL */
static int hf_gsm_map_gr_requestedInfo = -1;      /* RequestedInfo */
static int hf_gsm_map_gr_groupId = -1;            /* Long_GroupId */
static int hf_gsm_map_gr_cellId = -1;             /* GlobalCellId */
static int hf_gsm_map_gr_tmsi = -1;               /* TMSI */
static int hf_gsm_map_gr_cksn = -1;               /* Cksn */
static int hf_gsm_map_gr_anchorMSC_Address = -1;  /* ISDN_AddressString */
static int hf_gsm_map_gr_additionalSubscriptions = -1;  /* AdditionalSubscriptions */
static int hf_gsm_map_gr_kc = -1;                 /* Kc */

/* --- Module MAP-DialogueInformation --- --- ---                             */

static int hf_gsm_map_dialogue_gsm_map_dialogue_MAP_DialoguePDU_PDU = -1;  /* MAP_DialoguePDU */
static int hf_gsm_map_dialogue_map_open = -1;     /* MAP_OpenInfo */
static int hf_gsm_map_dialogue_map_accept = -1;   /* MAP_AcceptInfo */
static int hf_gsm_map_dialogue_map_close = -1;    /* MAP_CloseInfo */
static int hf_gsm_map_dialogue_map_refuse = -1;   /* MAP_RefuseInfo */
static int hf_gsm_map_dialogue_map_userAbort = -1;  /* MAP_UserAbortInfo */
static int hf_gsm_map_dialogue_map_providerAbort = -1;  /* MAP_ProviderAbortInfo */
static int hf_gsm_map_dialogue_destinationReference = -1;  /* AddressString */
static int hf_gsm_map_dialogue_originationReference = -1;  /* AddressString */
static int hf_gsm_map_dialogue_extensionContainer = -1;  /* ExtensionContainer */
static int hf_gsm_map_dialogue_reason = -1;       /* Reason */
static int hf_gsm_map_dialogue_alternativeApplicationContext = -1;  /* OBJECT_IDENTIFIER */
static int hf_gsm_map_dialogue_map_UserAbortChoice = -1;  /* MAP_UserAbortChoice */
static int hf_gsm_map_dialogue_userSpecificReason = -1;  /* NULL */
static int hf_gsm_map_dialogue_userResourceLimitation = -1;  /* NULL */
static int hf_gsm_map_dialogue_resourceUnavailable = -1;  /* ResourceUnavailableReason */
static int hf_gsm_map_dialogue_applicationProcedureCancellation = -1;  /* ProcedureCancellationReason */
static int hf_gsm_map_dialogue_map_ProviderAbortReason = -1;  /* MAP_ProviderAbortReason */

/* --- Module DummyMAP --- --- ---                                            */

static int hf_gsm_old_invoke = -1;                /* Invoke */
static int hf_gsm_old_returnResultLast = -1;      /* ReturnResult */
static int hf_gsm_old_returnError = -1;           /* ReturnError */
static int hf_gsm_old_reject = -1;                /* Reject */
static int hf_gsm_old_returnResultNotLast = -1;   /* ReturnResult */
static int hf_gsm_old_invokeID = -1;              /* InvokeIdType */
static int hf_gsm_old_linkedID = -1;              /* InvokeIdType */
static int hf_gsm_old_opCode = -1;                /* MAP_OPERATION */
static int hf_gsm_old_invokeparameter = -1;       /* InvokeParameter */
static int hf_gsm_old_resultretres = -1;          /* T_resultretres */
static int hf_gsm_old_returnparameter = -1;       /* ReturnResultParameter */
static int hf_gsm_old_errorCode = -1;             /* MAP_ERROR */
static int hf_gsm_old_parameter = -1;             /* ReturnErrorParameter */
static int hf_gsm_old_invokeIDRej = -1;           /* T_invokeIDRej */
static int hf_gsm_old_derivable = -1;             /* InvokeIdType */
static int hf_gsm_old_not_derivable = -1;         /* NULL */
static int hf_gsm_old_problem = -1;               /* T_problem */
static int hf_gsm_old_generalProblem = -1;        /* GeneralProblem */
static int hf_gsm_old_invokeProblem = -1;         /* InvokeProblem */
static int hf_gsm_old_returnResultProblem = -1;   /* ReturnResultProblem */
static int hf_gsm_old_returnErrorProblem = -1;    /* ReturnErrorProblem */
static int hf_gsm_old_localValue = -1;            /* OperationLocalvalue */
static int hf_gsm_old_globalValue = -1;           /* OBJECT_IDENTIFIER */
static int hf_gsm_old_localValue_01 = -1;         /* LocalErrorcode */
static int hf_gsm_old_protocolId = -1;            /* ProtocolId */
static int hf_gsm_old_signalInfo = -1;            /* SignalInfo */
static int hf_gsm_old_extensionContainer = -1;    /* ExtensionContainer */
static int hf_gsm_old_gsm_BearerCapability = -1;  /* ExternalSignalInfo */
static int hf_gsm_old_isdn_BearerCapability = -1;  /* ExternalSignalInfo */
static int hf_gsm_old_call_Direction = -1;        /* CallDirection */
static int hf_gsm_old_b_Subscriber_Address = -1;  /* ISDN_AddressString */
static int hf_gsm_old_chosenChannel = -1;         /* ExternalSignalInfo */
static int hf_gsm_old_lowerLayerCompatibility = -1;  /* ExternalSignalInfo */
static int hf_gsm_old_highLayerCompatibility = -1;  /* ExternalSignalInfo */
static int hf_gsm_old_sIWFSNumber = -1;           /* ISDN_AddressString */
static int hf_gsm_old_imsi = -1;                  /* IMSI */
static int hf_gsm_old_vlr_Number = -1;            /* ISDN_AddressString */
static int hf_gsm_old_targetCellId = -1;          /* GlobalCellId */
static int hf_gsm_old_ho_NumberNotRequired = -1;  /* NULL */
static int hf_gsm_old_bss_APDU = -1;              /* Bss_APDU */
static int hf_gsm_old_handoverNumber = -1;        /* ISDN_AddressString */
static int hf_gsm_old_SendAuthenticationInfoResOld_item = -1;  /* SendAuthenticationInfoResOld_item */
static int hf_gsm_old_rand = -1;                  /* RAND */
static int hf_gsm_old_sres = -1;                  /* SRES */
static int hf_gsm_old_kc = -1;                    /* Kc */
static int hf_gsm_old_tripletList = -1;           /* TripletListold */
static int hf_gsm_old_TripletListold_item = -1;   /* AuthenticationTriplet_v2 */
static int hf_gsm_old_channelType = -1;           /* ExternalSignalInfo */
static int hf_gsm_old_securityHeader = -1;        /* SecurityHeader */
static int hf_gsm_old_protectedPayload = -1;      /* ProtectedPayload */
static int hf_gsm_old_securityParametersIndex = -1;  /* SecurityParametersIndex */
static int hf_gsm_old_originalComponentIdentifier = -1;  /* OriginalComponentIdentifier */
static int hf_gsm_old_initialisationVector = -1;  /* InitialisationVector */
static int hf_gsm_old_operationCode = -1;         /* OperationCode */
static int hf_gsm_old_errorCode_01 = -1;          /* ErrorCode */
static int hf_gsm_old_userInfo = -1;              /* NULL */
static int hf_gsm_old_localValue_02 = -1;         /* INTEGER */
static int hf_gsm_old_msisdn = -1;                /* ISDN_AddressString */
static int hf_gsm_old_category = -1;              /* Category */
static int hf_gsm_old_basicService = -1;          /* BasicServiceCode */
static int hf_gsm_old_operatorSS_Code = -1;       /* T_operatorSS_Code */
static int hf_gsm_old_operatorSS_Code_item = -1;  /* OCTET_STRING_SIZE_1 */
static int hf_gsm_old_sm_RP_DA = -1;              /* SM_RP_DAold */
static int hf_gsm_old_sm_RP_OA = -1;              /* SM_RP_OAold */
static int hf_gsm_old_sm_RP_UI = -1;              /* SignalInfo */
static int hf_gsm_old_moreMessagesToSend = -1;    /* NULL */
static int hf_gsm_old_lmsi = -1;                  /* LMSI */
static int hf_gsm_old_serviceCentreAddressDA = -1;  /* AddressString */
static int hf_gsm_old_noSM_RP_DA = -1;            /* NULL */
static int hf_gsm_old_msisdn_01 = -1;             /* T_msisdn */
static int hf_gsm_old_serviceCentreAddressOA = -1;  /* T_serviceCentreAddressOA */
static int hf_gsm_old_noSM_RP_OA = -1;            /* NULL */
static int hf_gsm_old_cug_CheckInfo = -1;         /* CUG_CheckInfo */
static int hf_gsm_old_numberOfForwarding = -1;    /* NumberOfForwarding */
static int hf_gsm_old_networkSignalInfo = -1;     /* ExternalSignalInfo */
static int hf_gsm_old_routingInfo = -1;           /* RoutingInfo */
static int hf_gsm_old_originatingEntityNumber = -1;  /* ISDN_AddressString */
static int hf_gsm_old_msisdn_02 = -1;             /* AddressString */

/* --- Module SS-DataTypes --- --- ---                                        */

static int hf_gsm_ss_ss_Code = -1;                /* SS_Code */
static int hf_gsm_ss_ss_Status = -1;              /* SS_Status */
static int hf_gsm_ss_ss_Notification = -1;        /* SS_Notification */
static int hf_gsm_ss_callIsWaiting_Indicator = -1;  /* NULL */
static int hf_gsm_ss_callOnHold_Indicator = -1;   /* CallOnHold_Indicator */
static int hf_gsm_ss_mpty_Indicator = -1;         /* NULL */
static int hf_gsm_ss_cug_Index = -1;              /* CUG_Index */
static int hf_gsm_ss_clirSuppressionRejected = -1;  /* NULL */
static int hf_gsm_ss_ect_Indicator = -1;          /* ECT_Indicator */
static int hf_gsm_ss_nameIndicator = -1;          /* NameIndicator */
static int hf_gsm_ss_ccbs_Feature = -1;           /* CCBS_Feature */
static int hf_gsm_ss_alertingPattern = -1;        /* AlertingPattern */
static int hf_gsm_ss_multicall_Indicator = -1;    /* Multicall_Indicator */
static int hf_gsm_ss_chargingInformation = -1;    /* ChargingInformation */
static int hf_gsm_ss_e1 = -1;                     /* E1 */
static int hf_gsm_ss_e2 = -1;                     /* E2 */
static int hf_gsm_ss_e3 = -1;                     /* E3 */
static int hf_gsm_ss_e4 = -1;                     /* E4 */
static int hf_gsm_ss_e5 = -1;                     /* E5 */
static int hf_gsm_ss_e6 = -1;                     /* E6 */
static int hf_gsm_ss_e7 = -1;                     /* E7 */
static int hf_gsm_ss_suppressPrefCUG = -1;        /* NULL */
static int hf_gsm_ss_suppressOA = -1;             /* NULL */
static int hf_gsm_ss_ect_CallState = -1;          /* ECT_CallState */
static int hf_gsm_ss_rdn = -1;                    /* RDN */
static int hf_gsm_ss_callingName = -1;            /* Name */
static int hf_gsm_ss_namePresentationAllowed = -1;  /* NameSet */
static int hf_gsm_ss_presentationRestricted = -1;  /* NULL */
static int hf_gsm_ss_nameUnavailable = -1;        /* NULL */
static int hf_gsm_ss_namePresentationRestricted = -1;  /* NameSet */
static int hf_gsm_ss_dataCodingScheme = -1;       /* USSD_DataCodingScheme */
static int hf_gsm_ss_lengthInCharacters = -1;     /* INTEGER */
static int hf_gsm_ss_nameString = -1;             /* USSD_String */
static int hf_gsm_ss_presentationAllowedAddress = -1;  /* RemotePartyNumber */
static int hf_gsm_ss_numberNotAvailableDueToInterworking = -1;  /* NULL */
static int hf_gsm_ss_presentationRestrictedAddress = -1;  /* RemotePartyNumber */
static int hf_gsm_ss_partyNumber = -1;            /* ISDN_AddressString */
static int hf_gsm_ss_partyNumberSubaddress = -1;  /* ISDN_SubaddressString */
static int hf_gsm_ss_deflectedToNumber = -1;      /* AddressString */
static int hf_gsm_ss_deflectedToSubaddress = -1;  /* ISDN_SubaddressString */
static int hf_gsm_ss_uUS_Service = -1;            /* UUS_Service */
static int hf_gsm_ss_uUS_Required = -1;           /* BOOLEAN */
static int hf_gsm_ss_notificationType = -1;       /* NotificationToMSUser */
static int hf_gsm_ss_locationType = -1;           /* LocationType */
static int hf_gsm_ss_lcsClientExternalID = -1;    /* LCSClientExternalID */
static int hf_gsm_ss_lcsClientName = -1;          /* LCSClientName */
static int hf_gsm_ss_lcsRequestorID = -1;         /* LCSRequestorID */
static int hf_gsm_ss_lcsCodeword = -1;            /* LCSCodeword */
static int hf_gsm_ss_lcsServiceTypeID = -1;       /* LCSServiceTypeID */
static int hf_gsm_ss_verificationResponse = -1;   /* VerificationResponse */
static int hf_gsm_ss_molr_Type = -1;              /* MOLR_Type */
static int hf_gsm_ss_locationMethod = -1;         /* LocationMethod */
static int hf_gsm_ss_lcs_QoS = -1;                /* LCS_QoS */
static int hf_gsm_ss_mlc_Number = -1;             /* ISDN_AddressString */
static int hf_gsm_ss_gpsAssistanceData = -1;      /* GPSAssistanceData */
static int hf_gsm_ss_supportedGADShapes = -1;     /* SupportedGADShapes */
static int hf_gsm_ss_ageOfLocationInfo = -1;      /* AgeOfLocationInformation */
static int hf_gsm_ss_pseudonymIndicator = -1;     /* NULL */
static int hf_gsm_ss_h_gmlc_address = -1;         /* GSN_Address */
static int hf_gsm_ss_locationEstimate = -1;       /* Ext_GeographicalInformation */
static int hf_gsm_ss_velocityEstimate = -1;       /* VelocityEstimate */
static int hf_gsm_ss_referenceNumber = -1;        /* LCS_ReferenceNumber */
static int hf_gsm_ss_periodicLDRInfo = -1;        /* PeriodicLDRInfo */
static int hf_gsm_ss_locationUpdateRequest = -1;  /* NULL */
static int hf_gsm_ss_sequenceNumber = -1;         /* SequenceNumber */
static int hf_gsm_ss_terminationCause = -1;       /* TerminationCause */
static int hf_gsm_ss_mo_lrShortCircuit = -1;      /* NULL */
static int hf_gsm_ss_ganssAssistanceData = -1;    /* GANSSAssistanceData */
static int hf_gsm_ss_multiplePositioningProtocolPDUs = -1;  /* MultiplePositioningProtocolPDUs */
static int hf_gsm_ss_MultiplePositioningProtocolPDUs_item = -1;  /* PositioningProtocolPDU */
static int hf_gsm_ss_decipheringKeys = -1;        /* DecipheringKeys */
static int hf_gsm_ss_add_LocationEstimate = -1;   /* Add_GeographicalInformation */
static int hf_gsm_ss_reportingPLMNList = -1;      /* ReportingPLMNList */
static int hf_gsm_ss_deferredLocationEventType = -1;  /* DeferredLocationEventType */
static int hf_gsm_ss_areaEventInfo = -1;          /* AreaEventInfo */
static int hf_gsm_ss_qoS = -1;                    /* LCS_QoS */

/*--- End of included file: packet-gsm_map-hf.c ---*/
#line 144 "../../asn1/gsm_map/packet-gsm_map-template.c"

/* Initialize the subtree pointers */
static gint ett_gsm_map = -1;
static gint ett_gsm_map_InvokeId = -1;
static gint ett_gsm_map_InvokePDU = -1;
static gint ett_gsm_map_ReturnResultPDU = -1;
static gint ett_gsm_map_ReturnErrorPDU = -1;
static gint ett_gsm_map_ReturnResult_result = -1;
static gint ett_gsm_map_ReturnError_result = -1;
static gint ett_gsm_map_GSMMAPPDU = -1;
static gint ett_gsm_map_ext_qos_subscribed = -1;
static gint ett_gsm_map_pdptypenumber = -1;
static gint ett_gsm_map_RAIdentity = -1;
static gint ett_gsm_map_LAIFixedLength = -1;
static gint ett_gsm_map_isdn_address_string = -1;
static gint ett_gsm_map_geo_desc = -1;
static gint ett_gsm_map_LongSignalInfo = -1;
static gint ett_gsm_map_RadioResourceInformation =-1;
static gint ett_gsm_map_MSNetworkCapability =-1;
static gint ett_gsm_map_MSRadioAccessCapability = -1;
static gint ett_gsm_map_externalsignalinfo = -1;
static gint ett_gsm_map_cbs_data_coding = -1;
static gint ett_gsm_map_GlobalCellId = -1;
static gint ett_gsm_map_GeographicalInformation = -1;


/*--- Included file: packet-gsm_map-ett.c ---*/
#line 1 "../../asn1/gsm_map/packet-gsm_map-ett.c"

/* --- Module MAP-ExtensionDataTypes --- --- ---                              */

static gint ett_gsm_map_ExtensionContainer = -1;
static gint ett_gsm_map_SLR_ArgExtensionContainer = -1;
static gint ett_gsm_map_PrivateExtensionList = -1;
static gint ett_gsm_map_PrivateExtension = -1;
static gint ett_gsm_map_PCS_Extensions = -1;
static gint ett_gsm_map_SLR_Arg_PCS_Extensions = -1;

/* --- Module MAP-CommonDataTypes --- --- ---                                 */

static gint ett_gsm_map_ExternalSignalInfo = -1;
static gint ett_gsm_map_Ext_ExternalSignalInfo = -1;
static gint ett_gsm_map_AccessNetworkSignalInfo = -1;
static gint ett_gsm_map_Identity = -1;
static gint ett_gsm_map_IMSI_WithLMSI = -1;
static gint ett_gsm_map_HLR_List = -1;
static gint ett_gsm_map_NAEA_PreferredCI = -1;
static gint ett_gsm_map_SubscriberIdentity = -1;
static gint ett_gsm_map_LCSClientExternalID = -1;
static gint ett_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI = -1;
static gint ett_gsm_map_BasicServiceCode = -1;
static gint ett_gsm_map_Ext_BasicServiceCode = -1;
static gint ett_gsm_map_EMLPP_Info = -1;
static gint ett_gsm_map_MC_SS_Info = -1;

/* --- Module MAP-SS-DataTypes --- --- ---                                    */

static gint ett_gsm_map_ss_RegisterSS_Arg = -1;
static gint ett_gsm_map_ss_SS_Info = -1;
static gint ett_gsm_map_ss_ForwardingInfo = -1;
static gint ett_gsm_map_ss_ForwardingFeatureList = -1;
static gint ett_gsm_map_ss_ForwardingFeature = -1;
static gint ett_gsm_map_ss_CallBarringInfo = -1;
static gint ett_gsm_map_ss_CallBarringFeatureList = -1;
static gint ett_gsm_map_ss_CallBarringFeature = -1;
static gint ett_gsm_map_ss_SS_Data = -1;
static gint ett_gsm_map_ss_SS_SubscriptionOption = -1;
static gint ett_gsm_map_ss_SS_ForBS_Code = -1;
static gint ett_gsm_map_ss_GenericServiceInfo = -1;
static gint ett_gsm_map_ss_CCBS_FeatureList = -1;
static gint ett_gsm_map_ss_CCBS_Feature = -1;
static gint ett_gsm_map_ss_InterrogateSS_Res = -1;
static gint ett_gsm_map_ss_USSD_Arg = -1;
static gint ett_gsm_map_ss_USSD_Res = -1;
static gint ett_gsm_map_ss_SS_List = -1;
static gint ett_gsm_map_ss_BasicServiceGroupList = -1;
static gint ett_gsm_map_ss_SS_InvocationNotificationArg = -1;
static gint ett_gsm_map_ss_SS_InvocationNotificationRes = -1;
static gint ett_gsm_map_ss_SS_EventSpecification = -1;
static gint ett_gsm_map_ss_RegisterCC_EntryArg = -1;
static gint ett_gsm_map_ss_CCBS_Data = -1;
static gint ett_gsm_map_ss_ServiceIndicator = -1;
static gint ett_gsm_map_ss_RegisterCC_EntryRes = -1;
static gint ett_gsm_map_ss_EraseCC_EntryArg = -1;
static gint ett_gsm_map_ss_EraseCC_EntryRes = -1;

/* --- Module MAP-ER-DataTypes --- --- ---                                    */

static gint ett_gsm_map_er_RoamingNotAllowedParam = -1;
static gint ett_gsm_map_er_CallBarredParam = -1;
static gint ett_gsm_map_er_ExtensibleCallBarredParam = -1;
static gint ett_gsm_map_er_CUG_RejectParam = -1;
static gint ett_gsm_map_er_SS_IncompatibilityCause = -1;
static gint ett_gsm_map_er_SM_DeliveryFailureCause = -1;
static gint ett_gsm_map_er_AbsentSubscriberSM_Param = -1;
static gint ett_gsm_map_er_SystemFailureParam = -1;
static gint ett_gsm_map_er_ExtensibleSystemFailureParam = -1;
static gint ett_gsm_map_er_DataMissingParam = -1;
static gint ett_gsm_map_er_UnexpectedDataParam = -1;
static gint ett_gsm_map_er_FacilityNotSupParam = -1;
static gint ett_gsm_map_er_OR_NotAllowedParam = -1;
static gint ett_gsm_map_er_UnknownSubscriberParam = -1;
static gint ett_gsm_map_er_NumberChangedParam = -1;
static gint ett_gsm_map_er_UnidentifiedSubParam = -1;
static gint ett_gsm_map_er_IllegalSubscriberParam = -1;
static gint ett_gsm_map_er_IllegalEquipmentParam = -1;
static gint ett_gsm_map_er_BearerServNotProvParam = -1;
static gint ett_gsm_map_er_TeleservNotProvParam = -1;
static gint ett_gsm_map_er_TracingBufferFullParam = -1;
static gint ett_gsm_map_er_NoRoamingNbParam = -1;
static gint ett_gsm_map_er_AbsentSubscriberParam = -1;
static gint ett_gsm_map_er_BusySubscriberParam = -1;
static gint ett_gsm_map_er_NoSubscriberReplyParam = -1;
static gint ett_gsm_map_er_ForwardingViolationParam = -1;
static gint ett_gsm_map_er_ForwardingFailedParam = -1;
static gint ett_gsm_map_er_ATI_NotAllowedParam = -1;
static gint ett_gsm_map_er_ATSI_NotAllowedParam = -1;
static gint ett_gsm_map_er_ATM_NotAllowedParam = -1;
static gint ett_gsm_map_er_IllegalSS_OperationParam = -1;
static gint ett_gsm_map_er_SS_NotAvailableParam = -1;
static gint ett_gsm_map_er_SS_SubscriptionViolationParam = -1;
static gint ett_gsm_map_er_InformationNotAvailableParam = -1;
static gint ett_gsm_map_er_SubBusyForMT_SMS_Param = -1;
static gint ett_gsm_map_er_MessageWaitListFullParam = -1;
static gint ett_gsm_map_er_ResourceLimitationParam = -1;
static gint ett_gsm_map_er_NoGroupCallNbParam = -1;
static gint ett_gsm_map_er_IncompatibleTerminalParam = -1;
static gint ett_gsm_map_er_ShortTermDenialParam = -1;
static gint ett_gsm_map_er_LongTermDenialParam = -1;
static gint ett_gsm_map_er_UnauthorizedRequestingNetwork_Param = -1;
static gint ett_gsm_map_er_UnauthorizedLCSClient_Param = -1;
static gint ett_gsm_map_er_PositionMethodFailure_Param = -1;
static gint ett_gsm_map_er_UnknownOrUnreachableLCSClient_Param = -1;
static gint ett_gsm_map_er_MM_EventNotSupported_Param = -1;
static gint ett_gsm_map_er_TargetCellOutsideGCA_Param = -1;
static gint ett_gsm_map_er_OngoingGroupCallParam = -1;

/* --- Module MAP-SM-DataTypes --- --- ---                                    */

static gint ett_gsm_map_sm_RoutingInfoForSM_Arg = -1;
static gint ett_gsm_map_sm_RoutingInfoForSM_Res = -1;
static gint ett_gsm_map_sm_LocationInfoWithLMSI = -1;
static gint ett_gsm_map_sm_Additional_Number = -1;
static gint ett_gsm_map_sm_MO_ForwardSM_Arg = -1;
static gint ett_gsm_map_sm_MO_ForwardSM_Res = -1;
static gint ett_gsm_map_sm_MT_ForwardSM_Arg = -1;
static gint ett_gsm_map_sm_MT_ForwardSM_Res = -1;
static gint ett_gsm_map_sm_SM_RP_DA = -1;
static gint ett_gsm_map_sm_SM_RP_OA = -1;
static gint ett_gsm_map_sm_ReportSM_DeliveryStatusArg = -1;
static gint ett_gsm_map_sm_ReportSM_DeliveryStatusRes = -1;
static gint ett_gsm_map_sm_AlertServiceCentreArg = -1;
static gint ett_gsm_map_sm_InformServiceCentreArg = -1;
static gint ett_gsm_map_sm_MW_Status = -1;
static gint ett_gsm_map_sm_ReadyForSM_Arg = -1;
static gint ett_gsm_map_sm_ReadyForSM_Res = -1;
static gint ett_gsm_map_sm_MT_ForwardSM_VGCS_Arg = -1;
static gint ett_gsm_map_sm_MT_ForwardSM_VGCS_Res = -1;
static gint ett_gsm_map_sm_DispatcherList = -1;

/* --- Module MAP-OM-DataTypes --- --- ---                                    */

static gint ett_gsm_map_om_ActivateTraceModeArg = -1;
static gint ett_gsm_map_om_TraceDepthList = -1;
static gint ett_gsm_map_om_TraceNE_TypeList = -1;
static gint ett_gsm_map_om_TraceInterfaceList = -1;
static gint ett_gsm_map_om_MSC_S_InterfaceList = -1;
static gint ett_gsm_map_om_MGW_InterfaceList = -1;
static gint ett_gsm_map_om_SGSN_InterfaceList = -1;
static gint ett_gsm_map_om_GGSN_InterfaceList = -1;
static gint ett_gsm_map_om_RNC_InterfaceList = -1;
static gint ett_gsm_map_om_BMSC_InterfaceList = -1;
static gint ett_gsm_map_om_MME_InterfaceList = -1;
static gint ett_gsm_map_om_SGW_InterfaceList = -1;
static gint ett_gsm_map_om_PGW_InterfaceList = -1;
static gint ett_gsm_map_om_ENB_InterfaceList = -1;
static gint ett_gsm_map_om_TraceEventList = -1;
static gint ett_gsm_map_om_MSC_S_EventList = -1;
static gint ett_gsm_map_om_MGW_EventList = -1;
static gint ett_gsm_map_om_SGSN_EventList = -1;
static gint ett_gsm_map_om_GGSN_EventList = -1;
static gint ett_gsm_map_om_BMSC_EventList = -1;
static gint ett_gsm_map_om_MME_EventList = -1;
static gint ett_gsm_map_om_SGW_EventList = -1;
static gint ett_gsm_map_om_PGW_EventList = -1;
static gint ett_gsm_map_om_TracePropagationList = -1;
static gint ett_gsm_map_om_ActivateTraceModeRes = -1;
static gint ett_gsm_map_om_DeactivateTraceModeArg = -1;
static gint ett_gsm_map_om_DeactivateTraceModeRes = -1;

/* --- Module MAP-MS-DataTypes --- --- ---                                    */

static gint ett_gsm_map_ms_UpdateLocationArg = -1;
static gint ett_gsm_map_ms_VLR_Capability = -1;
static gint ett_gsm_map_ms_SupportedRAT_Types = -1;
static gint ett_gsm_map_ms_SuperChargerInfo = -1;
static gint ett_gsm_map_ms_SupportedLCS_CapabilitySets = -1;
static gint ett_gsm_map_ms_UpdateLocationRes = -1;
static gint ett_gsm_map_ms_ADD_Info = -1;
static gint ett_gsm_map_ms_PagingArea = -1;
static gint ett_gsm_map_ms_LocationArea = -1;
static gint ett_gsm_map_ms_CancelLocationArg_U = -1;
static gint ett_gsm_map_ms_CancelLocationRes = -1;
static gint ett_gsm_map_ms_PurgeMS_Arg_U = -1;
static gint ett_gsm_map_ms_PurgeMS_Res = -1;
static gint ett_gsm_map_ms_SendIdentificationArg = -1;
static gint ett_gsm_map_ms_SendIdentificationRes_U = -1;
static gint ett_gsm_map_ms_AuthenticationSetList = -1;
static gint ett_gsm_map_ms_TripletList = -1;
static gint ett_gsm_map_ms_QuintupletList = -1;
static gint ett_gsm_map_ms_AuthenticationTriplet = -1;
static gint ett_gsm_map_ms_AuthenticationQuintuplet = -1;
static gint ett_gsm_map_ms_CurrentSecurityContext = -1;
static gint ett_gsm_map_ms_GSM_SecurityContextData = -1;
static gint ett_gsm_map_ms_UMTS_SecurityContextData = -1;
static gint ett_gsm_map_ms_AuthenticationFailureReportArg = -1;
static gint ett_gsm_map_ms_AuthenticationFailureReportRes = -1;
static gint ett_gsm_map_ms_UpdateGprsLocationArg = -1;
static gint ett_gsm_map_ms_EPS_Info = -1;
static gint ett_gsm_map_ms_PDN_GW_Update = -1;
static gint ett_gsm_map_ms_ISR_Information = -1;
static gint ett_gsm_map_ms_SGSN_Capability = -1;
static gint ett_gsm_map_ms_SupportedFeatures = -1;
static gint ett_gsm_map_ms_UpdateGprsLocationRes = -1;
static gint ett_gsm_map_ms_ForwardAccessSignalling_Arg_U = -1;
static gint ett_gsm_map_ms_AllowedUMTS_Algorithms = -1;
static gint ett_gsm_map_ms_PrepareHO_Arg_U = -1;
static gint ett_gsm_map_ms_BSSMAP_ServiceHandoverList = -1;
static gint ett_gsm_map_ms_BSSMAP_ServiceHandoverInfo = -1;
static gint ett_gsm_map_ms_RadioResourceList = -1;
static gint ett_gsm_map_ms_RadioResource = -1;
static gint ett_gsm_map_ms_PrepareHO_Res_U = -1;
static gint ett_gsm_map_ms_SelectedUMTS_Algorithms = -1;
static gint ett_gsm_map_ms_ChosenRadioResourceInformation = -1;
static gint ett_gsm_map_ms_PrepareSubsequentHO_Arg_U = -1;
static gint ett_gsm_map_ms_PrepareSubsequentHO_Res_U = -1;
static gint ett_gsm_map_ms_ProcessAccessSignalling_Arg_U = -1;
static gint ett_gsm_map_ms_AoIPCodecsList = -1;
static gint ett_gsm_map_ms_SupportedCodecsList = -1;
static gint ett_gsm_map_ms_CodecList = -1;
static gint ett_gsm_map_ms_SendEndSignal_Arg_U = -1;
static gint ett_gsm_map_ms_SendEndSignal_Res = -1;
static gint ett_gsm_map_ms_RelocationNumberList = -1;
static gint ett_gsm_map_ms_RelocationNumber = -1;
static gint ett_gsm_map_ms_SendAuthenticationInfoArg = -1;
static gint ett_gsm_map_ms_Re_synchronisationInfo = -1;
static gint ett_gsm_map_ms_SendAuthenticationInfoRes_U = -1;
static gint ett_gsm_map_ms_EPS_AuthenticationSetList = -1;
static gint ett_gsm_map_ms_EPC_AV = -1;
static gint ett_gsm_map_ms_CheckIMEI_Arg = -1;
static gint ett_gsm_map_ms_CheckIMEI_Res = -1;
static gint ett_gsm_map_ms_RequestedEquipmentInfo = -1;
static gint ett_gsm_map_ms_UESBI_Iu = -1;
static gint ett_gsm_map_ms_InsertSubscriberDataArg = -1;
static gint ett_gsm_map_ms_CSG_SubscriptionDataList = -1;
static gint ett_gsm_map_ms_CSG_SubscriptionData = -1;
static gint ett_gsm_map_ms_EPS_SubscriptionData = -1;
static gint ett_gsm_map_ms_APN_ConfigurationProfile = -1;
static gint ett_gsm_map_ms_EPS_DataList = -1;
static gint ett_gsm_map_ms_APN_Configuration = -1;
static gint ett_gsm_map_ms_EPS_QoS_Subscribed = -1;
static gint ett_gsm_map_ms_AMBR = -1;
static gint ett_gsm_map_ms_SpecificAPNInfoList = -1;
static gint ett_gsm_map_ms_SpecificAPNInfo = -1;
static gint ett_gsm_map_ms_Allocation_Retention_Priority = -1;
static gint ett_gsm_map_ms_PDN_GW_Identity = -1;
static gint ett_gsm_map_ms_AccessRestrictionData = -1;
static gint ett_gsm_map_ms_LCSInformation = -1;
static gint ett_gsm_map_ms_GMLC_List = -1;
static gint ett_gsm_map_ms_GPRSDataList = -1;
static gint ett_gsm_map_ms_PDP_Context = -1;
static gint ett_gsm_map_ms_GPRSSubscriptionData = -1;
static gint ett_gsm_map_ms_SGSN_CAMEL_SubscriptionInfo = -1;
static gint ett_gsm_map_ms_GPRS_CSI = -1;
static gint ett_gsm_map_ms_GPRS_CamelTDPDataList = -1;
static gint ett_gsm_map_ms_GPRS_CamelTDPData = -1;
static gint ett_gsm_map_ms_LSADataList = -1;
static gint ett_gsm_map_ms_LSAData = -1;
static gint ett_gsm_map_ms_LSAInformation = -1;
static gint ett_gsm_map_ms_SubscriberData = -1;
static gint ett_gsm_map_ms_BearerServiceList = -1;
static gint ett_gsm_map_ms_TeleserviceList = -1;
static gint ett_gsm_map_ms_ODB_Data = -1;
static gint ett_gsm_map_ms_ODB_GeneralData = -1;
static gint ett_gsm_map_ms_ODB_HPLMN_Data = -1;
static gint ett_gsm_map_ms_Ext_SS_InfoList = -1;
static gint ett_gsm_map_ms_Ext_SS_Info = -1;
static gint ett_gsm_map_ms_Ext_ForwInfo = -1;
static gint ett_gsm_map_ms_Ext_ForwFeatureList = -1;
static gint ett_gsm_map_ms_Ext_ForwFeature = -1;
static gint ett_gsm_map_ms_Ext_CallBarInfo = -1;
static gint ett_gsm_map_ms_Ext_CallBarFeatureList = -1;
static gint ett_gsm_map_ms_Ext_CallBarringFeature = -1;
static gint ett_gsm_map_ms_CUG_Info = -1;
static gint ett_gsm_map_ms_CUG_SubscriptionList = -1;
static gint ett_gsm_map_ms_CUG_Subscription = -1;
static gint ett_gsm_map_ms_CUG_FeatureList = -1;
static gint ett_gsm_map_ms_Ext_BasicServiceGroupList = -1;
static gint ett_gsm_map_ms_CUG_Feature = -1;
static gint ett_gsm_map_ms_Ext_SS_Data = -1;
static gint ett_gsm_map_ms_LCS_PrivacyExceptionList = -1;
static gint ett_gsm_map_ms_LCS_PrivacyClass = -1;
static gint ett_gsm_map_ms_ExternalClientList = -1;
static gint ett_gsm_map_ms_PLMNClientList = -1;
static gint ett_gsm_map_ms_Ext_ExternalClientList = -1;
static gint ett_gsm_map_ms_ExternalClient = -1;
static gint ett_gsm_map_ms_ServiceTypeList = -1;
static gint ett_gsm_map_ms_ServiceType = -1;
static gint ett_gsm_map_ms_MOLR_List = -1;
static gint ett_gsm_map_ms_MOLR_Class = -1;
static gint ett_gsm_map_ms_ZoneCodeList = -1;
static gint ett_gsm_map_ms_InsertSubscriberDataRes = -1;
static gint ett_gsm_map_ms_DeleteSubscriberDataArg = -1;
static gint ett_gsm_map_ms_SpecificCSI_Withdraw = -1;
static gint ett_gsm_map_ms_GPRSSubscriptionDataWithdraw = -1;
static gint ett_gsm_map_ms_EPS_SubscriptionDataWithdraw = -1;
static gint ett_gsm_map_ms_ContextIdList = -1;
static gint ett_gsm_map_ms_LSAInformationWithdraw = -1;
static gint ett_gsm_map_ms_LSAIdentityList = -1;
static gint ett_gsm_map_ms_BasicServiceList = -1;
static gint ett_gsm_map_ms_DeleteSubscriberDataRes = -1;
static gint ett_gsm_map_ms_VlrCamelSubscriptionInfo = -1;
static gint ett_gsm_map_ms_MT_smsCAMELTDP_CriteriaList = -1;
static gint ett_gsm_map_ms_MT_smsCAMELTDP_Criteria = -1;
static gint ett_gsm_map_ms_TPDU_TypeCriterion = -1;
static gint ett_gsm_map_ms_D_CSI = -1;
static gint ett_gsm_map_ms_DP_AnalysedInfoCriteriaList = -1;
static gint ett_gsm_map_ms_DP_AnalysedInfoCriterium = -1;
static gint ett_gsm_map_ms_SS_CSI = -1;
static gint ett_gsm_map_ms_SS_CamelData = -1;
static gint ett_gsm_map_ms_SS_EventList = -1;
static gint ett_gsm_map_ms_O_CSI = -1;
static gint ett_gsm_map_ms_O_BcsmCamelTDPDataList = -1;
static gint ett_gsm_map_ms_O_BcsmCamelTDPData = -1;
static gint ett_gsm_map_ms_O_BcsmCamelTDPCriteriaList = -1;
static gint ett_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList = -1;
static gint ett_gsm_map_ms_O_BcsmCamelTDP_Criteria = -1;
static gint ett_gsm_map_ms_T_BCSM_CAMEL_TDP_Criteria = -1;
static gint ett_gsm_map_ms_DestinationNumberCriteria = -1;
static gint ett_gsm_map_ms_DestinationNumberList = -1;
static gint ett_gsm_map_ms_DestinationNumberLengthList = -1;
static gint ett_gsm_map_ms_BasicServiceCriteria = -1;
static gint ett_gsm_map_ms_O_CauseValueCriteria = -1;
static gint ett_gsm_map_ms_T_CauseValueCriteria = -1;
static gint ett_gsm_map_ms_SupportedCamelPhases = -1;
static gint ett_gsm_map_ms_OfferedCamel4CSIs = -1;
static gint ett_gsm_map_ms_OfferedCamel4Functionalities = -1;
static gint ett_gsm_map_ms_SMS_CSI = -1;
static gint ett_gsm_map_ms_SMS_CAMEL_TDP_DataList = -1;
static gint ett_gsm_map_ms_SMS_CAMEL_TDP_Data = -1;
static gint ett_gsm_map_ms_M_CSI = -1;
static gint ett_gsm_map_ms_MG_CSI = -1;
static gint ett_gsm_map_ms_MobilityTriggers = -1;
static gint ett_gsm_map_ms_T_CSI = -1;
static gint ett_gsm_map_ms_T_BcsmCamelTDPDataList = -1;
static gint ett_gsm_map_ms_T_BcsmCamelTDPData = -1;
static gint ett_gsm_map_ms_SendRoutingInfoForGprsArg = -1;
static gint ett_gsm_map_ms_SendRoutingInfoForGprsRes = -1;
static gint ett_gsm_map_ms_FailureReportArg = -1;
static gint ett_gsm_map_ms_FailureReportRes = -1;
static gint ett_gsm_map_ms_NoteMsPresentForGprsArg = -1;
static gint ett_gsm_map_ms_NoteMsPresentForGprsRes = -1;
static gint ett_gsm_map_ms_ResetArg = -1;
static gint ett_gsm_map_ms_RestoreDataArg = -1;
static gint ett_gsm_map_ms_RestoreDataRes = -1;
static gint ett_gsm_map_ms_VBSDataList = -1;
static gint ett_gsm_map_ms_VGCSDataList = -1;
static gint ett_gsm_map_ms_VoiceGroupCallData = -1;
static gint ett_gsm_map_ms_AdditionalSubscriptions = -1;
static gint ett_gsm_map_ms_VoiceBroadcastData = -1;
static gint ett_gsm_map_ms_ProvideSubscriberInfoArg = -1;
static gint ett_gsm_map_ms_ProvideSubscriberInfoRes = -1;
static gint ett_gsm_map_ms_SubscriberInfo = -1;
static gint ett_gsm_map_ms_MNPInfoRes = -1;
static gint ett_gsm_map_ms_GPRSMSClass = -1;
static gint ett_gsm_map_ms_RequestedInfo = -1;
static gint ett_gsm_map_ms_RequestedNodes = -1;
static gint ett_gsm_map_ms_LocationInformation = -1;
static gint ett_gsm_map_ms_LocationInformationEPS = -1;
static gint ett_gsm_map_ms_LocationInformationGPRS = -1;
static gint ett_gsm_map_ms_UserCSGInformation = -1;
static gint ett_gsm_map_ms_SubscriberState = -1;
static gint ett_gsm_map_ms_PS_SubscriberState = -1;
static gint ett_gsm_map_ms_PDP_ContextInfoList = -1;
static gint ett_gsm_map_ms_PDP_ContextInfo = -1;
static gint ett_gsm_map_ms_AnyTimeInterrogationArg = -1;
static gint ett_gsm_map_ms_AnyTimeInterrogationRes = -1;
static gint ett_gsm_map_ms_AnyTimeSubscriptionInterrogationArg = -1;
static gint ett_gsm_map_ms_AnyTimeSubscriptionInterrogationRes = -1;
static gint ett_gsm_map_ms_RequestedSubscriptionInfo = -1;
static gint ett_gsm_map_ms_MSISDN_BS_List = -1;
static gint ett_gsm_map_ms_MSISDN_BS = -1;
static gint ett_gsm_map_ms_CallForwardingData = -1;
static gint ett_gsm_map_ms_CallBarringData = -1;
static gint ett_gsm_map_ms_ODB_Info = -1;
static gint ett_gsm_map_ms_CAMEL_SubscriptionInfo = -1;
static gint ett_gsm_map_ms_AnyTimeModificationArg = -1;
static gint ett_gsm_map_ms_ModificationRequestFor_CSG = -1;
static gint ett_gsm_map_ms_ServingNode = -1;
static gint ett_gsm_map_ms_AnyTimeModificationRes = -1;
static gint ett_gsm_map_ms_ModificationRequestFor_CF_Info = -1;
static gint ett_gsm_map_ms_ModificationRequestFor_CB_Info = -1;
static gint ett_gsm_map_ms_ModificationRequestFor_ODB_data = -1;
static gint ett_gsm_map_ms_ModificationRequestFor_CSI = -1;
static gint ett_gsm_map_ms_ModificationRequestFor_IP_SM_GW_Data = -1;
static gint ett_gsm_map_ms_NoteSubscriberDataModifiedArg = -1;
static gint ett_gsm_map_ms_NoteSubscriberDataModifiedRes = -1;
static gint ett_gsm_map_ms_NoteMM_EventArg = -1;
static gint ett_gsm_map_ms_NoteMM_EventRes = -1;
static gint ett_gsm_map_ms_Ext_SS_InfoFor_CSE = -1;
static gint ett_gsm_map_ms_Ext_ForwardingInfoFor_CSE = -1;
static gint ett_gsm_map_ms_Ext_CallBarringInfoFor_CSE = -1;

/* --- Module MAP-CH-DataTypes --- --- ---                                    */

static gint ett_gsm_map_ch_CUG_CheckInfo = -1;
static gint ett_gsm_map_ch_SendRoutingInfoArg = -1;
static gint ett_gsm_map_ch_SuppressMTSS = -1;
static gint ett_gsm_map_ch_SendRoutingInfoRes_U = -1;
static gint ett_gsm_map_ch_AllowedServices = -1;
static gint ett_gsm_map_ch_CCBS_Indicators = -1;
static gint ett_gsm_map_ch_RoutingInfo = -1;
static gint ett_gsm_map_ch_ForwardingData = -1;
static gint ett_gsm_map_ch_ProvideRoamingNumberArg = -1;
static gint ett_gsm_map_ch_ProvideRoamingNumberRes = -1;
static gint ett_gsm_map_ch_ResumeCallHandlingArg = -1;
static gint ett_gsm_map_ch_UU_Data = -1;
static gint ett_gsm_map_ch_ResumeCallHandlingRes = -1;
static gint ett_gsm_map_ch_CamelInfo = -1;
static gint ett_gsm_map_ch_ExtendedRoutingInfo = -1;
static gint ett_gsm_map_ch_CamelRoutingInfo = -1;
static gint ett_gsm_map_ch_GmscCamelSubscriptionInfo = -1;
static gint ett_gsm_map_ch_SetReportingStateArg = -1;
static gint ett_gsm_map_ch_SetReportingStateRes = -1;
static gint ett_gsm_map_ch_StatusReportArg = -1;
static gint ett_gsm_map_ch_EventReportData = -1;
static gint ett_gsm_map_ch_CallReportData = -1;
static gint ett_gsm_map_ch_StatusReportRes = -1;
static gint ett_gsm_map_ch_RemoteUserFreeArg = -1;
static gint ett_gsm_map_ch_RemoteUserFreeRes = -1;
static gint ett_gsm_map_ch_IST_AlertArg = -1;
static gint ett_gsm_map_ch_IST_AlertRes = -1;
static gint ett_gsm_map_ch_IST_CommandArg = -1;
static gint ett_gsm_map_ch_IST_CommandRes = -1;
static gint ett_gsm_map_ch_ReleaseResourcesArg = -1;
static gint ett_gsm_map_ch_ReleaseResourcesRes = -1;

/* --- Module MAP-LCS-DataTypes --- --- ---                                   */

static gint ett_gsm_map_lcs_RoutingInfoForLCS_Arg = -1;
static gint ett_gsm_map_lcs_RoutingInfoForLCS_Res = -1;
static gint ett_gsm_map_lcs_LCSLocationInfo = -1;
static gint ett_gsm_map_lcs_ProvideSubscriberLocation_Arg = -1;
static gint ett_gsm_map_lcs_LocationType = -1;
static gint ett_gsm_map_lcs_DeferredLocationEventType = -1;
static gint ett_gsm_map_lcs_LCS_ClientID = -1;
static gint ett_gsm_map_lcs_LCSClientName = -1;
static gint ett_gsm_map_lcs_LCSRequestorID = -1;
static gint ett_gsm_map_lcs_LCS_QoS = -1;
static gint ett_gsm_map_lcs_ResponseTime = -1;
static gint ett_gsm_map_lcs_SupportedGADShapes = -1;
static gint ett_gsm_map_lcs_LCSCodeword = -1;
static gint ett_gsm_map_lcs_LCS_PrivacyCheck = -1;
static gint ett_gsm_map_lcs_AreaEventInfo = -1;
static gint ett_gsm_map_lcs_AreaDefinition = -1;
static gint ett_gsm_map_lcs_AreaList = -1;
static gint ett_gsm_map_lcs_Area = -1;
static gint ett_gsm_map_lcs_PeriodicLDRInfo = -1;
static gint ett_gsm_map_lcs_ReportingPLMNList = -1;
static gint ett_gsm_map_lcs_PLMNList = -1;
static gint ett_gsm_map_lcs_ReportingPLMN = -1;
static gint ett_gsm_map_lcs_ProvideSubscriberLocation_Res = -1;
static gint ett_gsm_map_lcs_SubscriberLocationReport_Arg = -1;
static gint ett_gsm_map_lcs_Deferredmt_lrData = -1;
static gint ett_gsm_map_lcs_ServingNodeAddress = -1;
static gint ett_gsm_map_lcs_SubscriberLocationReport_Res = -1;

/* --- Module MAP-GR-DataTypes --- --- ---                                    */

static gint ett_gsm_map_gr_PrepareGroupCallArg = -1;
static gint ett_gsm_map_gr_PrepareGroupCallRes = -1;
static gint ett_gsm_map_gr_SendGroupCallEndSignalArg = -1;
static gint ett_gsm_map_gr_SendGroupCallEndSignalRes = -1;
static gint ett_gsm_map_gr_ForwardGroupCallSignallingArg = -1;
static gint ett_gsm_map_gr_ProcessGroupCallSignallingArg = -1;
static gint ett_gsm_map_gr_StateAttributes = -1;
static gint ett_gsm_map_gr_SendGroupCallInfoArg = -1;
static gint ett_gsm_map_gr_SendGroupCallInfoRes = -1;

/* --- Module MAP-DialogueInformation --- --- ---                             */

static gint ett_gsm_map_dialogue_MAP_DialoguePDU = -1;
static gint ett_gsm_map_dialogue_MAP_OpenInfo = -1;
static gint ett_gsm_map_dialogue_MAP_AcceptInfo = -1;
static gint ett_gsm_map_dialogue_MAP_CloseInfo = -1;
static gint ett_gsm_map_dialogue_MAP_RefuseInfo = -1;
static gint ett_gsm_map_dialogue_MAP_UserAbortInfo = -1;
static gint ett_gsm_map_dialogue_MAP_UserAbortChoice = -1;
static gint ett_gsm_map_dialogue_MAP_ProviderAbortInfo = -1;

/* --- Module MAP-LocationServiceOperations --- --- ---                       */


/* --- Module MAP-Group-Call-Operations --- --- ---                           */


/* --- Module MAP-ShortMessageServiceOperations --- --- ---                   */


/* --- Module MAP-SupplementaryServiceOperations --- --- ---                  */


/* --- Module MAP-CallHandlingOperations --- --- ---                          */


/* --- Module MAP-OperationAndMaintenanceOperations --- --- ---               */


/* --- Module MAP-MobileServiceOperations --- --- ---                         */


/* --- Module MAP-Errors --- --- ---                                          */


/* --- Module MAP-Protocol --- --- ---                                        */


/* --- Module DummyMAP --- --- ---                                            */

static gint ett_gsm_old_Component = -1;
static gint ett_gsm_old_Invoke = -1;
static gint ett_gsm_old_ReturnResult = -1;
static gint ett_gsm_old_T_resultretres = -1;
static gint ett_gsm_old_ReturnError = -1;
static gint ett_gsm_old_Reject = -1;
static gint ett_gsm_old_T_invokeIDRej = -1;
static gint ett_gsm_old_T_problem = -1;
static gint ett_gsm_old_MAP_OPERATION = -1;
static gint ett_gsm_old_MAP_ERROR = -1;
static gint ett_gsm_old_Bss_APDU = -1;
static gint ett_gsm_old_ProvideSIWFSNumberArg = -1;
static gint ett_gsm_old_ProvideSIWFSNumberRes = -1;
static gint ett_gsm_old_PurgeMSArgV2 = -1;
static gint ett_gsm_old_PrepareHO_ArgOld = -1;
static gint ett_gsm_old_PrepareHO_ResOld = -1;
static gint ett_gsm_old_SendAuthenticationInfoResOld = -1;
static gint ett_gsm_old_SendAuthenticationInfoResOld_item = -1;
static gint ett_gsm_old_SendIdentificationResV2 = -1;
static gint ett_gsm_old_TripletListold = -1;
static gint ett_gsm_old_AuthenticationTriplet_v2 = -1;
static gint ett_gsm_old_SIWFSSignallingModifyArg = -1;
static gint ett_gsm_old_SIWFSSignallingModifyRes = -1;
static gint ett_gsm_old_SecureTransportArg = -1;
static gint ett_gsm_old_SecureTransportErrorParam = -1;
static gint ett_gsm_old_SecureTransportRes = -1;
static gint ett_gsm_old_SecurityHeader = -1;
static gint ett_gsm_old_OriginalComponentIdentifier = -1;
static gint ett_gsm_old_OperationCode = -1;
static gint ett_gsm_old_ErrorCode = -1;
static gint ett_gsm_old_PlmnContainer_U = -1;
static gint ett_gsm_old_T_operatorSS_Code = -1;
static gint ett_gsm_old_ForwardSM_Arg = -1;
static gint ett_gsm_old_SM_RP_DAold = -1;
static gint ett_gsm_old_SM_RP_OAold = -1;
static gint ett_gsm_old_SendRoutingInfoArgV2 = -1;
static gint ett_gsm_old_SendRoutingInfoResV2 = -1;
static gint ett_gsm_old_BeginSubscriberActivityArg = -1;

/* --- Module SS-DataTypes --- --- ---                                        */

static gint ett_gsm_ss_NotifySS_Arg = -1;
static gint ett_gsm_ss_ForwardChargeAdviceArg = -1;
static gint ett_gsm_ss_ChargingInformation = -1;
static gint ett_gsm_ss_ForwardCUG_InfoArg = -1;
static gint ett_gsm_ss_ECT_Indicator = -1;
static gint ett_gsm_ss_NameIndicator = -1;
static gint ett_gsm_ss_Name = -1;
static gint ett_gsm_ss_NameSet = -1;
static gint ett_gsm_ss_RDN = -1;
static gint ett_gsm_ss_RemotePartyNumber = -1;
static gint ett_gsm_ss_AccessRegisterCCEntryArg = -1;
static gint ett_gsm_ss_CallDeflectionArg = -1;
static gint ett_gsm_ss_UserUserServiceArg = -1;
static gint ett_gsm_ss_LocationNotificationArg = -1;
static gint ett_gsm_ss_LocationNotificationRes = -1;
static gint ett_gsm_ss_LCS_MOLRArg = -1;
static gint ett_gsm_ss_MultiplePositioningProtocolPDUs = -1;
static gint ett_gsm_ss_LCS_MOLRRes = -1;
static gint ett_gsm_ss_LCS_AreaEventRequestArg = -1;
static gint ett_gsm_ss_LCS_AreaEventReportArg = -1;
static gint ett_gsm_ss_LCS_AreaEventCancellationArg = -1;
static gint ett_gsm_ss_LCS_PeriodicLocationRequestArg = -1;
static gint ett_gsm_ss_LCS_PeriodicLocationRequestRes = -1;
static gint ett_gsm_ss_LCS_LocationUpdateArg = -1;
static gint ett_gsm_ss_LCS_LocationUpdateRes = -1;
static gint ett_gsm_ss_LCS_PeriodicLocationCancellationArg = -1;

/* --- Module SS-Operations --- --- ---                                       */


/*--- End of included file: packet-gsm_map-ett.c ---*/
#line 170 "../../asn1/gsm_map/packet-gsm_map-template.c"

static dissector_table_t	sms_dissector_table;	/* SMS TPDU */
static dissector_handle_t	data_handle;
static dissector_handle_t	ranap_handle;
static dissector_handle_t	dtap_handle;
static dissector_handle_t	map_handle;

/* Preferenc settings default */
#define MAX_SSN 254
static range_t *global_ssn_range;

/* Global variables */
static guint32 opcode=0;
static guint32 errorCode;
static proto_tree *top_tree;
static int application_context_version;
static guint ProtocolId;
static guint AccessNetworkProtocolId;
static const char *obj_id = NULL;
static int gsm_map_tap = -1;

#define SMS_ENCODING_NOT_SET	0
#define SMS_ENCODING_7BIT		1
#define SMS_ENCODING_8BIT		2
#define SMS_ENCODING_UCS2		3
#define SMS_ENCODING_7BIT_LANG	4
#define SMS_ENCODING_UCS2_LANG	5

static guint8 sms_encoding;

/* Forward declarations */
static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx);
static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx);
static int dissect_returnErrorData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx);
const gchar* gsm_map_opr_code(guint32 val);

/* Value strings */

const value_string gsm_map_PDP_Type_Organisation_vals[] = {
  {  0, "ETSI" },
  {  1, "IETF" },
  { 0, NULL }
};

const value_string gsm_map_ietf_defined_pdp_vals[] = {
  {  0x21, "IPv4 Address" },
  {  0x57, "IPv6 Address" },
  { 0, NULL }
};

const value_string gsm_map_etsi_defined_pdp_vals[] = {
  {  1, "PPP" },
  { 0, NULL }
};

static const value_string gsm_map_tag_vals[] = {
  {  0x4, "Bearer Capability" },
  { 0, NULL }
};

static const value_string gsm_map_disc_par_vals[] = {
  {  0, "Not Transparent" },
  {  1, "Transparent" },
  { 0, NULL }
};

const char *
unpack_digits(tvbuff_t *tvb, int offset) {

	int length;
	guint8 octet;
	int i=0;
	char *digit_str;

	length = tvb_length(tvb);
	if (length < offset)
		return "";
	digit_str = (char *)ep_alloc((length - offset)*2+1);

	while ( offset < length ){

		octet = tvb_get_guint8(tvb,offset);
		digit_str[i] = ((octet & 0x0f) + '0');
		i++;

		/*
		 * unpack second value in byte
		 */
		octet = octet >> 4;

		if (octet == 0x0f)	/* odd number bytes - hit filler */
			break;

		digit_str[i] = ((octet & 0x0f) + '0');
		i++;
		offset++;

	}
	digit_str[i]= '\0';
	return digit_str;
}

/* returns value in kb/s */
static guint
gsm_map_calc_bitrate(guint8 value){

	guint8 granularity;
	guint returnvalue;

	if (value == 0xff)
		return 0;

	granularity = value >> 6;
	returnvalue = value & 0x7f;
	switch (granularity){
	case 0:
		break;
	case 1:
		returnvalue = ((returnvalue - 0x40) << 3)+64;
		break;
	case 2:
		returnvalue = (returnvalue << 6)+576;
		break;
	case 3:
		returnvalue = (returnvalue << 6)+576;
		break;
	}
	return returnvalue;

}

static void
dissect_gsm_map_ext_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx){
	int offset = 0;
    proto_tree *subtree;
	guint8 octet;
	guint16 value;

	subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_ext_qos_subscribed);
	/*  OCTET 1:
		Allocation/Retention Priority (This octet encodes each priority level defined in
		23.107 as the binary value of the priority level, declaration in 29.060)
		Octets 2-9 are coded according to 3GPP TS 24.008[35] Quality of Service Octets
		6-13.
	 */
	/* Allocation/Retention Priority */
	proto_tree_add_item(subtree, hf_gsm_map_ext_qos_subscribed_pri, tvb, offset, 1, FALSE);
	offset++;

	/* Quality of Service Octets 6-13.( Octet 2 - 9 Here) */

	/* Traffic class, octet 6 (see 3GPP TS 23.107) Bits 8 7 6 */
	proto_tree_add_item(subtree, hf_gsm_map_qos_traffic_cls, tvb, offset, 1, FALSE);
	/* Delivery order, octet 6 (see 3GPP TS 23.107) Bits 5 4 */
	proto_tree_add_item(subtree, hf_gsm_map_qos_del_order, tvb, offset, 1, FALSE);
	/* Delivery of erroneous SDUs, octet 6 (see 3GPP TS 23.107) Bits 3 2 1 */
	proto_tree_add_item(subtree, hf_gsm_map_qos_del_of_err_sdu, tvb, offset, 1, FALSE);
	offset++;

	/* Maximum SDU size, octet 7 (see 3GPP TS 23.107) */
	octet = tvb_get_guint8(tvb,offset);
	switch (octet){
	case 0:
		proto_tree_add_text(subtree, tvb, offset, 1, "Subscribed Maximum SDU size/Reserved");
		break;
	case 0x93:
		value = 1502;
		proto_tree_add_uint(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, value);
		break;
	case 0x98:
		value = 1510;
		proto_tree_add_uint(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, value);
		break;
	case 0x99:
		value = 1532;
		proto_tree_add_uint(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, value);
		break;
	default:
		if (octet<0x97){
			value = octet * 10;
			proto_tree_add_uint(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, value);
		}else{
			proto_tree_add_text(subtree, tvb, offset, 1, "Maximum SDU size value 0x%x not defined in TS 24.008",octet);
		}
	}
	offset++;

	/* Maximum bit rate for uplink, octet 8 */
	octet = tvb_get_guint8(tvb,offset);
	if (octet == 0 ){
		proto_tree_add_text(subtree, tvb, offset, 1, "Subscribed Maximum bit rate for uplink/Reserved"  );
	}else{
		proto_tree_add_uint(subtree, hf_gsm_map_max_brate_ulink, tvb, offset, 1, gsm_map_calc_bitrate(octet));
	}
	offset++;
	/* Maximum bit rate for downlink, octet 9 (see 3GPP TS 23.107) */
	octet = tvb_get_guint8(tvb,offset);
	if (octet == 0 ){
		proto_tree_add_text(subtree, tvb, offset, 1, "Subscribed Maximum bit rate for downlink/Reserved"  );
	}else{
		proto_tree_add_uint(subtree, hf_gsm_map_max_brate_dlink, tvb, offset, 1, gsm_map_calc_bitrate(octet));
	}
	offset++;
	/* Residual Bit Error Rate (BER), octet 10 (see 3GPP TS 23.107) Bits 8 7 6 5 */
	proto_tree_add_item(subtree, hf_gsm_map_qos_ber, tvb, offset, 1, FALSE);
	/* SDU error ratio, octet 10 (see 3GPP TS 23.107) */
	proto_tree_add_item(subtree, hf_gsm_map_qos_sdu_err_rat, tvb, offset, 1, FALSE);
	offset++;

	/* Transfer delay, octet 11 (See 3GPP TS 23.107) Bits 8 7 6 5 4 3 */
	proto_tree_add_item(subtree, hf_gsm_map_qos_transfer_delay, tvb, offset, 1, FALSE);
	/* Traffic handling priority, octet 11 (see 3GPP TS 23.107) Bits 2 1 */
	proto_tree_add_item(subtree, hf_gsm_map_qos_traff_hdl_pri, tvb, offset, 1, FALSE);
	offset++;

	/*	Guaranteed bit rate for uplink, octet 12 (See 3GPP TS 23.107)
		Coding is identical to that of Maximum bit rate for uplink.
	 */
	octet = tvb_get_guint8(tvb,offset);
	if (octet == 0 ){
		proto_tree_add_text(subtree, tvb, offset, 1, "Subscribed Guaranteed bit rate for uplink/Reserved"  );
	}else{
		proto_tree_add_uint(subtree, hf_gsm_map_guaranteed_max_brate_ulink, tvb, offset, 1, gsm_map_calc_bitrate(octet));
	}
	offset++;

	/*	Guaranteed bit rate for downlink, octet 13(See 3GPP TS 23.107)
		Coding is identical to that of Maximum bit rate for uplink.
	 */
	octet = tvb_get_guint8(tvb,offset);
	if (octet == 0 ){
		proto_tree_add_text(subtree, tvb, offset, 1, "Subscribed Guaranteed bit rate for downlink/Reserved"  );
	}else{
		proto_tree_add_uint(subtree, hf_gsm_map_guaranteed_max_brate_dlink, tvb, offset, 1, gsm_map_calc_bitrate(octet));
	}

}

#define  ELLIPSOID_POINT 0
#define  ELLIPSOID_POINT_WITH_UNCERT_CIRC 1
#define  ELLIPSOID_POINT_WITH_UNCERT_ELLIPSE 3
#define  POLYGON 5
#define  ELLIPSOID_POINT_WITH_ALT 8
#define  ELLIPSOID_POINT_WITH_ALT_AND_UNCERT_ELLIPSOID 9
#define  ELLIPSOID_ARC 10
/*
4 3 2 1
0 0 0 0 Ellipsoid Point
0 0 0 1 Ellipsoid point with uncertainty Circle
0 0 1 1 Ellipsoid point with uncertainty Ellipse
0 1 0 1 Polygon
1 0 0 0 Ellipsoid point with altitude
1 0 0 1 Ellipsoid point with altitude and uncertainty Ellipsoid
1 0 1 0 Ellipsoid Arc
other values reserved for future use
*/

/* TS 23 032 Table 2a: Coding of Type of Shape */
static const value_string type_of_shape_vals[] = {
	{ ELLIPSOID_POINT,									"Ellipsoid Point"},
	{ ELLIPSOID_POINT_WITH_UNCERT_CIRC,					"Ellipsoid point with uncertainty Circle"},
	{ ELLIPSOID_POINT_WITH_UNCERT_ELLIPSE,				"Ellipsoid point with uncertainty Ellipse"},
	{ POLYGON,											"Polygon"},
	{ ELLIPSOID_POINT_WITH_ALT,							"Ellipsoid point with altitude"},
	{ ELLIPSOID_POINT_WITH_ALT_AND_UNCERT_ELLIPSOID,	"Ellipsoid point with altitude and uncertainty Ellipsoid"},
	{ ELLIPSOID_ARC,									"Ellipsoid Arc"},
	{ 0,	NULL }
};

/* 3GPP TS 23.032 7.3.1 */
static const value_string sign_of_latitude_vals[] = {
	{ 0,		"North"},
	{ 1,		"South"},
	{ 0,	NULL }
};

static const value_string dir_of_alt_vals[] = {
	{ 0,		"Altitude expresses height"},
	{ 1,		"Altitude expresses depth"},
	{ 0,	NULL }
};

static const value_string gsm_map_cbs_data_coding_scheme_coding_grp_vals[] = {
	{ 0, "Coding Group 0(Language using the GSM 7 bit default alphabet)" },
	{ 1, "Coding Group 1" },
	{ 2, "Coding Group 2" },
	{ 3, "Coding Group 3" },
	{ 4, "General Data Coding indication" },
	{ 5, "General Data Coding indication" },
	{ 6, "General Data Coding indication" },
	{ 7, "General Data Coding indication" },
	{ 8, "Reserved" },
	{ 9, "Message with User Data Header (UDH) structure" },
	{ 10,"Reserved" },
	{ 11,"Reserved" },
	{ 12,"Reserved" },
	{ 13,"Reserved" },
	{ 14,"Defined by the WAP Forum" },
	{ 15,"Data coding / message handling" },
	{ 0, NULL}
};
static value_string_ext gsm_map_cbs_data_coding_scheme_coding_grp_vals_ext = VALUE_STRING_EXT_INIT(gsm_map_cbs_data_coding_scheme_coding_grp_vals);

/* Coding group 0
 * Bits 3..0 indicate the language:
 */
static const value_string gsm_map_cbs_coding_grp0_lang_vals[] = {
	{ 0, "German"},
	{ 1, "English"},
	{ 2, "Italian"},
	{ 3, "French"},
	{ 4, "Spanish"},
	{ 5, "Dutch"},
	{ 6, "Swedish"},
	{ 7, "Danish"},
	{ 8, "Portuguese"},
	{ 9, "Finnish"},
	{ 10, "Norwegian"},
	{ 11, "Greek"},
	{ 12, "Turkish"},
	{ 13, "Hungarian"},
	{ 14, "Polish"},
	{ 15, "Language unspecified"},
	{ 0,	NULL }
};
static value_string_ext gsm_map_cbs_coding_grp0_lang_vals_ext = VALUE_STRING_EXT_INIT(gsm_map_cbs_coding_grp0_lang_vals);

static const value_string gsm_map_cbs_coding_grp1_lang_vals[] = {
	{ 0, "GSM 7 bit default alphabet; message preceded by language indication"},
	{ 1, "UCS2; message preceded by language indication"},
	{ 2, "Reserved"},
	{ 3, "Reserved"},
	{ 4, "Reserved"},
	{ 5, "Reserved"},
	{ 6, "Reserved"},
	{ 7, "Reserved"},
	{ 8, "Reserved"},
	{ 9, "Reserved"},
	{ 10, "Reserved"},
	{ 11, "Reserved"},
	{ 12, "Reserved"},
	{ 13, "Reserved"},
	{ 14, "Reserved"},
	{ 15, "Reserved"},
	{ 0,	NULL }
};
static value_string_ext gsm_map_cbs_coding_grp1_lang_vals_ext = VALUE_STRING_EXT_INIT(gsm_map_cbs_coding_grp1_lang_vals);

static const value_string gsm_map_cbs_coding_grp2_lang_vals[] = {
	{ 0, "Czech"},
	{ 1, "Hebrew"},
	{ 2, "Arabic"},
	{ 3, "Russian"},
	{ 4, "Icelandic"},
	{ 5, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 6, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 7, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 8, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 9, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 10, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 11, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 12, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 13, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 14, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 15, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 0,	NULL }
};
static value_string_ext gsm_map_cbs_coding_grp2_lang_vals_ext = VALUE_STRING_EXT_INIT(gsm_map_cbs_coding_grp2_lang_vals);

static const value_string gsm_map_cbs_coding_grp3_lang_vals[] = {
	{ 0, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 1, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 2, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 3, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 4, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 5, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 6, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 7, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 8, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 9, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 10, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 11, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 12, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 13, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 14, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 15, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"},
	{ 0,	NULL }
};
static value_string_ext gsm_map_cbs_coding_grp3_lang_vals_ext = VALUE_STRING_EXT_INIT(gsm_map_cbs_coding_grp3_lang_vals);

static const true_false_string gsm_map_cbs_coding_grp4_7_comp_vals = {
  "The text is compressed using the compression algorithm defined in 3GPP TS 23.042",
  "The text is uncompressed"
};

static const true_false_string gsm_map_cbs_coding_grp4_7_class_ind_vals = {
  "Bits 1 to 0 have a message class meaning",
  "Bits 1 to 0 are reserved and have no message class meaning"
};

/* Bits 3 and 2 indicate the character set being used, as follows: */

static const value_string gsm_map_cbs_coding_grp4_7_char_set_vals[] = {
	{ 0, "GSM 7 bit default alphabet"},
	{ 1, "8 bit data"},
	{ 2, "UCS2 (16 bit)"},
	{ 3, "Reserved"},
	{ 0,	NULL }
};

static const value_string gsm_map_cbs_coding_grp4_7_class_vals[] = {
	{ 0, "Class 0"},
	{ 1, "Class 1 Default meaning: ME-specific"},
	{ 2, "Class 2 (U)SIM specific message"},
	{ 3, "Class 3 Default meaning: TE-specific (see 3GPP TS 27.005"},
	{ 0,	NULL }
};

static const value_string gsm_map_cbs_coding_grp15_mess_code_vals[] = {
	{ 0, "GSM 7 bit default alphabet"},
	{ 1, "8 bit data"},
	{ 0,	NULL }
};

static const value_string gsm_map_cbs_coding_grp15_class_vals[] = {
	{ 0, "GSM 7 bit default alphabet"},
	{ 1, "8 bit data"},
	{ 0,	NULL }
};


/* 3GPP TS 23.038 version 7.0.0 Release 7 */
guint8
dissect_cbs_data_coding_scheme(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
{
	guint8 octet;
	guint8 coding_grp;
	guint8 character_set;

	octet = tvb_get_guint8(tvb,0);
	coding_grp = octet >>4;
	proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp, tvb, 0, 1, FALSE);

	sms_encoding = SMS_ENCODING_NOT_SET;
	switch (coding_grp){
	case 0:
		proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp0_lang, tvb, 0, 1, FALSE);
		sms_encoding = SMS_ENCODING_7BIT;
		break;
	case 1:
		proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp1_lang, tvb, 0, 1, FALSE);
		if ((octet & 0x0f)== 0){
			sms_encoding = SMS_ENCODING_7BIT_LANG;
		}else{
			sms_encoding = SMS_ENCODING_UCS2_LANG;
		}
		break;
	case 2:
		proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp2_lang, tvb, 0, 1, FALSE);
		sms_encoding = SMS_ENCODING_7BIT;
		break;
	case 3:
		proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp3_lang, tvb, 0, 1, FALSE);
		sms_encoding = SMS_ENCODING_7BIT;
		break;
		/* Coding_grp 01xx */
	case 4:
		  /* FALLTHRU */
	case 5:
		  /* FALLTHRU */
	case 6:
		  /* FALLTHRU */
	case 7:
		  /* FALLTHRU */
		proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp4_7_comp, tvb, 0, 1, FALSE);
		proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp4_7_class_ind, tvb, 0, 1, FALSE);
		proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp4_7_char_set, tvb, 0, 1, FALSE);
		if ((octet & 0x10)== 0x10){
			proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp4_7_class, tvb, 0, 1, FALSE);
		}
		/* Bits 3 and 2 indicate the character set being used, */
		character_set = (octet&0x0c)>>2;
		switch (character_set){
		case 0:
			/* GSM 7 bit default alphabet */
			sms_encoding = SMS_ENCODING_7BIT;
			break;
		case 1:
			/* 8 bit data */
			sms_encoding = SMS_ENCODING_8BIT;
			break;
		case 2:
			/* UCS2 (16 bit) */
			sms_encoding = SMS_ENCODING_UCS2;
			break;
		case 3:
			/* Reserved */
			sms_encoding = SMS_ENCODING_NOT_SET;
			break;
		default:
			break;
		}
		break;
	case 8:
		/* Reserved coding groups */
		break;
	case 9:
		/* Message with User Data Header (UDH) structure:*/
		proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp4_7_char_set, tvb, 0, 1, FALSE);
		proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp4_7_class, tvb, 0, 1, FALSE);
		character_set = (octet&0x0c)>>2;
		switch (character_set){
		case 0:
			/* GSM 7 bit default alphabet */
			sms_encoding = SMS_ENCODING_7BIT;
			break;
		case 1:
			/* 8 bit data */
			sms_encoding = SMS_ENCODING_8BIT;
			break;
		case 2:
			/* UCS2 (16 bit) */
			sms_encoding = SMS_ENCODING_UCS2;
			break;
		case 3:
			/* Reserved */
			sms_encoding = SMS_ENCODING_NOT_SET;
			break;
		default:
			break;
		}
		break;
	case 10:
		/* FALLTHRU */
	case 11:
		/* FALLTHRU */
	case 12:
		/* FALLTHRU */
	case 13:
		/* FALLTHRU */
		/* 1010..1101 Reserved coding groups */
		break;
	case 14:
		/* Defined by the WAP Forum
		 * "Wireless Datagram Protocol Specification", Wireless Application Protocol Forum Ltd.
		 */
		break;
	case 15:
		/* Data coding / message handling */
		proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp15_mess_code, tvb, 0, 1, FALSE);
		proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp15_class, tvb, 0, 1, FALSE);
		character_set = (octet&0x04)>>2;
		if (character_set == 0){
			sms_encoding = SMS_ENCODING_7BIT;
		}else{
			sms_encoding = SMS_ENCODING_8BIT;
		}
		break;
	default:
		break;
	}

	return sms_encoding;
}
void
dissect_gsm_map_msisdn(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
{
 const char	*digit_str;
 guint8		octet;
 guint8		na;
 guint8		np;

 proto_tree_add_item(tree, hf_gsm_map_extension, tvb, 0,1,FALSE);
 proto_tree_add_item(tree, hf_gsm_map_nature_of_number, tvb, 0,1,FALSE);
 proto_tree_add_item(tree, hf_gsm_map_number_plan, tvb, 0,1,FALSE);

 digit_str = unpack_digits(tvb, 1);

 proto_tree_add_string(tree, hf_gsm_map_address_digits, tvb, 1, -1, digit_str);

 octet = tvb_get_guint8(tvb,0);
 na = (octet & 0x70)>>4;
 np = octet & 0x0f;
 if ((na == 1) && (np==1))/*International Number & E164*/
	dissect_e164_cc(tvb, tree, 1, TRUE);
 else if(np==6)
	dissect_e212_mcc_mnc_in_address(tvb, pinfo, tree, 1);

}


/*--- Included file: packet-gsm_map-fn.c ---*/
#line 1 "../../asn1/gsm_map/packet-gsm_map-fn.c"

/* --- Module MAP-SS-Code --- --- ---                                         */



int
dissect_gsm_map_SS_Code(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


/* --- Module MAP-BS-Code --- --- ---                                         */



static int
dissect_gsm_map_BearerServiceCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_Ext_BearerServiceCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


/* --- Module MAP-TS-Code --- --- ---                                         */



static int
dissect_gsm_map_TeleserviceCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_Ext_TeleserviceCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


/* --- Module MAP-ExtensionDataTypes --- --- ---                              */



static int
dissect_gsm_map_T_extId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &obj_id);

  return offset;
}



static int
dissect_gsm_map_T_extType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 188 "../../asn1/gsm_map/gsm_map.cnf"
  proto_tree_add_text(tree, tvb, offset, -1, "Extension Data");
  if (obj_id){
	 offset=call_ber_oid_callback(obj_id, tvb, offset, actx->pinfo, tree);
  }else{
	 call_dissector(data_handle, tvb, actx->pinfo, tree);
	 offset = tvb_length_remaining(tvb,offset);
  }



  return offset;
}


static const ber_sequence_t gsm_map_PrivateExtension_sequence[] = {
  { &hf_gsm_map_extId       , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_gsm_map_T_extId },
  { &hf_gsm_map_extType     , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_T_extType },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_PrivateExtension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_PrivateExtension_sequence, hf_index, ett_gsm_map_PrivateExtension);

  return offset;
}


static const ber_sequence_t gsm_map_PrivateExtensionList_sequence_of[1] = {
  { &hf_gsm_map_PrivateExtensionList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_PrivateExtension },
};

static int
dissect_gsm_map_PrivateExtensionList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_PrivateExtensionList_sequence_of, hf_index, ett_gsm_map_PrivateExtensionList);

  return offset;
}


static const ber_sequence_t gsm_map_PCS_Extensions_sequence[] = {
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_PCS_Extensions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_PCS_Extensions_sequence, hf_index, ett_gsm_map_PCS_Extensions);

  return offset;
}


static const ber_sequence_t gsm_map_ExtensionContainer_sequence[] = {
  { &hf_gsm_map_privateExtensionList, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_PrivateExtensionList },
  { &hf_gsm_map_pcs_Extensions, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_PCS_Extensions },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ExtensionContainer(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ExtensionContainer_sequence, hf_index, ett_gsm_map_ExtensionContainer);

  return offset;
}



static int
dissect_gsm_map_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);

  return offset;
}


static const ber_sequence_t gsm_map_SLR_Arg_PCS_Extensions_sequence[] = {
  { &hf_gsm_map_na_ESRK_Request, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_SLR_Arg_PCS_Extensions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_SLR_Arg_PCS_Extensions_sequence, hf_index, ett_gsm_map_SLR_Arg_PCS_Extensions);

  return offset;
}


static const ber_sequence_t gsm_map_SLR_ArgExtensionContainer_sequence[] = {
  { &hf_gsm_map_privateExtensionList, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_PrivateExtensionList },
  { &hf_gsm_map_slr_Arg_PCS_Extensions, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_SLR_Arg_PCS_Extensions },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_SLR_ArgExtensionContainer(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_SLR_ArgExtensionContainer_sequence, hf_index, ett_gsm_map_SLR_ArgExtensionContainer);

  return offset;
}


/* --- Module MAP-CommonDataTypes --- --- ---                                 */



static int
dissect_gsm_map_TBCD_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 214 "../../asn1/gsm_map/gsm_map.cnf"
 tvbuff_t	*parameter_tvb;
 const char	*digit_str;

   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);


 if (!parameter_tvb)
	return offset;

 digit_str = unpack_digits(parameter_tvb, 0);
 proto_tree_add_string(tree, hf_gsm_map_TBCD_digits, parameter_tvb, 0, -1, digit_str);



  return offset;
}



static int
dissect_gsm_map_DiameterIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



int
dissect_gsm_map_AddressString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 201 "../../asn1/gsm_map/gsm_map.cnf"

 tvbuff_t	*parameter_tvb;
 proto_tree *subtree;

  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);


 if (!parameter_tvb)
	return offset;

 subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_isdn_address_string);
 dissect_gsm_map_msisdn(parameter_tvb, actx->pinfo , subtree);



  return offset;
}



int
dissect_gsm_map_ISDN_AddressString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);

  return offset;
}



static int
dissect_gsm_map_FTN_AddressString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);

  return offset;
}



int
dissect_gsm_map_ISDN_SubaddressString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const value_string gsm_map_ProtocolId_vals[] = {
  {   1, "gsm-0408" },
  {   2, "gsm-0806" },
  {   3, "gsm-BSSMAP" },
  {   4, "ets-300102-1" },
  { 0, NULL }
};


static int
dissect_gsm_map_ProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  &ProtocolId);

  return offset;
}



static int
dissect_gsm_map_SignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 295 "../../asn1/gsm_map/gsm_map.cnf"
 tvbuff_t	*parameter_tvb;

   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);

	actx->value_ptr = parameter_tvb;




  return offset;
}


static const ber_sequence_t gsm_map_ExternalSignalInfo_sequence[] = {
  { &hf_gsm_map_protocolId  , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ProtocolId },
  { &hf_gsm_map_signalInfo  , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo },
  { &hf_gsm_map_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ExternalSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 717 "../../asn1/gsm_map/gsm_map.cnf"
/*
-- Information about the internal structure is given in
-- clause 7.6.9.
7.6.9.4 External Signal Information
This parameter contains concatenated information elements (including tag and length) which are defined by a common
protocol version, preceded by the associated protocol ID. It is used to transport information of the indicated protocol via
MAP interfaces
*/
 guint8		octet;
 guint8		length;
 tvbuff_t	*next_tvb;
 proto_tree *subtree;

 ProtocolId = 0xffffffff;
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ExternalSignalInfo_sequence, hf_index, ett_gsm_map_ExternalSignalInfo);

if (!actx->value_ptr)
	return offset;
 subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_externalsignalinfo);
 switch (ProtocolId){
	case 1:
	/* gsm-0408 */
		/* As per comment abowe Individual IE:(s) will be found here in TLV format
		 * Unfortunatly a branch for each IE must be made to call the apropriate
		 * function
		 */
		 /* Get tag */
		 octet = tvb_get_guint8(actx->value_ptr,0);
		 proto_tree_add_item(subtree, hf_gsm_map_ie_tag, actx->value_ptr, 0,1,FALSE);
		 /* get length */
		 length = tvb_get_guint8(actx->value_ptr,1);
		 proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 1,1,FALSE);
		 /* Branch on tag */
		 switch(octet){
		 case 4:
			/* Dissect the data part */
			de_bearer_cap(actx->value_ptr, subtree, actx->pinfo, 2, length, NULL, 0);
			/* TODO: There may be more than one IE */
			break;
		 default:
			proto_tree_add_text(subtree, actx->value_ptr, 0, length, "If you want this decoded send the packet to Wireshark-dev");
			break;
		}/* switch(octet) */
		break;
	case 2:
 		/* gsm-0806 */
		octet = tvb_get_guint8(actx->value_ptr,0);
		/* Discrimination parameter */
		proto_tree_add_item(subtree, hf_gsm_map_disc_par, actx->value_ptr, 0,1,FALSE);
		if ( octet == 0) {/* DISCRIMINATION TS 48 006(GSM 08.06 version 5.3.0) */
			/* Strip off discrimination and length */
			proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 1,1,FALSE);
			next_tvb = tvb_new_subset_remaining(actx->value_ptr, 2);
			dissect_bssmap(next_tvb, actx->pinfo, subtree);
		}else if(octet==1){
			proto_tree_add_item(subtree, hf_gsm_map_dlci, actx->value_ptr, 1,1,FALSE);
			proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 2,1,FALSE);
			next_tvb = tvb_new_subset_remaining(actx->value_ptr, 3);
			call_dissector(dtap_handle, next_tvb, actx->pinfo, subtree);
		}
		break;
	case 3:
	/* gsm-BSSMAP TODO Is it correct to stripp off two first octets here?*/
		octet = tvb_get_guint8(actx->value_ptr,0);
		length = tvb_get_guint8(actx->value_ptr,1);
		if ( octet == 0) {/* DISCRIMINATION TS 48 006 */
			next_tvb = tvb_new_subset_remaining(actx->value_ptr, 2);
			dissect_bssmap(next_tvb, actx->pinfo, subtree);
		}
		break;
	/* ets-300102-1 (~Q.931 ) */
	case 4:
		octet = tvb_get_guint8(actx->value_ptr,0);
		length = tvb_get_guint8(actx->value_ptr,1);
		if ( octet == 4 )
			dissect_q931_bearer_capability_ie(actx->value_ptr, 2, length, subtree);
		break;
	default:
		break;
	}/*switch (ProtocolId)*/



  return offset;
}


static const value_string gsm_map_Ext_ProtocolId_vals[] = {
  {   1, "ets-300356" },
  { 0, NULL }
};


static int
dissect_gsm_map_Ext_ProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_Ext_ExternalSignalInfo_sequence[] = {
  { &hf_gsm_map_ext_ProtocolId, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_ProtocolId },
  { &hf_gsm_map_signalInfo  , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo },
  { &hf_gsm_map_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_Ext_ExternalSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_Ext_ExternalSignalInfo_sequence, hf_index, ett_gsm_map_Ext_ExternalSignalInfo);

  return offset;
}


static const value_string gsm_map_AccessNetworkProtocolId_vals[] = {
  {   1, "ts3G-48006" },
  {   2, "ts3G-25413" },
  { 0, NULL }
};


static int
dissect_gsm_map_AccessNetworkProtocolId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  &AccessNetworkProtocolId);

  return offset;
}



static int
dissect_gsm_map_LongSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 233 "../../asn1/gsm_map/gsm_map.cnf"

 tvbuff_t	*parameter_tvb;
 guint8		octet;
 guint8		length;
 tvbuff_t	*next_tvb;
 proto_tree *subtree;


  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);


 if (!parameter_tvb)
	return offset;

 subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_LongSignalInfo);

 switch (AccessNetworkProtocolId){
	/* ts3G-48006 */
	case 1:
		octet = tvb_get_guint8(parameter_tvb,0);
		/* Discrimination parameter */
		proto_tree_add_item(subtree, hf_gsm_map_disc_par, parameter_tvb, 0,1,FALSE);
		if ( octet == 0) {/* DISCRIMINATION TS 48 006(GSM 08.06 version 5.3.0) */
			/* Strip off discrimination and length */
			length = tvb_get_guint8(parameter_tvb,0);
			proto_tree_add_item(subtree, hf_gsm_map_len, parameter_tvb, 1,1,FALSE);
			next_tvb = tvb_new_subset_remaining(parameter_tvb, 2);
			dissect_bssmap(next_tvb, actx->pinfo, subtree);
		}else if(octet==1){
			proto_tree_add_item(subtree, hf_gsm_map_dlci, parameter_tvb, 1,1,FALSE);
			proto_tree_add_item(subtree, hf_gsm_map_len, parameter_tvb, 2,1,FALSE);
			length = tvb_get_guint8(parameter_tvb,0);
			next_tvb = tvb_new_subset_remaining(parameter_tvb, 3);
			call_dissector(dtap_handle, next_tvb, actx->pinfo, subtree);
		}
		break;
 	/* ts3G-25413 */
	case 2:
		call_dissector(ranap_handle, parameter_tvb, actx->pinfo, tree);
		break;
	default:
		break;

 }


  return offset;
}


static const ber_sequence_t gsm_map_AccessNetworkSignalInfo_sequence[] = {
  { &hf_gsm_map_accessNetworkProtocolId, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_AccessNetworkProtocolId },
  { &hf_gsm_map_signalInfo_01, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_LongSignalInfo },
  { &hf_gsm_map_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_AccessNetworkSignalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_AccessNetworkSignalInfo_sequence, hf_index, ett_gsm_map_AccessNetworkSignalInfo);

  return offset;
}



int
dissect_gsm_map_AlertingPattern(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



int
dissect_gsm_map_GSN_Address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 541 "../../asn1/gsm_map/gsm_map.cnf"

	tvbuff_t	*parameter_tvb;
	guint8		octet;
	proto_tree *subtree;

  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);


	if (!parameter_tvb)
		return offset;
	subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_pdptypenumber);

	octet = tvb_get_guint8(parameter_tvb,0);
	switch(octet){
	case 0x04: /* IPv4 */
		proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), FALSE);
		break;
	case 0x50: /* IPv4 */
		proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, tvb_length_remaining(parameter_tvb, 1), FALSE);
		break;
	default:
		break;
	}



  return offset;
}



int
dissect_gsm_map_IMSI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, actx, tree, hf_index);

  return offset;
}



static int
dissect_gsm_map_LMSI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_IMSI_WithLMSI_sequence[] = {
  { &hf_gsm_map_imsi        , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_lmsi        , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_LMSI },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_IMSI_WithLMSI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_IMSI_WithLMSI_sequence, hf_index, ett_gsm_map_IMSI_WithLMSI);

  return offset;
}


static const value_string gsm_map_Identity_vals[] = {
  {   0, "imsi" },
  {   1, "imsi-WithLMSI" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_Identity_choice[] = {
  {   0, &hf_gsm_map_imsi        , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
  {   1, &hf_gsm_map_imsi_WithLMSI, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI_WithLMSI },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_Identity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_Identity_choice, hf_index, ett_gsm_map_Identity,
                                 NULL);

  return offset;
}



static int
dissect_gsm_map_ASCI_CallReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, actx, tree, hf_index);

  return offset;
}



static int
dissect_gsm_map_TMSI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



int
dissect_gsm_map_IMEI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, actx, tree, hf_index);

  return offset;
}



static int
dissect_gsm_map_HLR_Id(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_gsm_map_IMSI(implicit_tag, tvb, offset, actx, tree, hf_index);

  return offset;
}


static const ber_sequence_t gsm_map_HLR_List_sequence_of[1] = {
  { &hf_gsm_map_HLR_List_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_HLR_Id },
};

static int
dissect_gsm_map_HLR_List(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_HLR_List_sequence_of, hf_index, ett_gsm_map_HLR_List);

  return offset;
}



int
dissect_gsm_map_GlobalCellId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 798 "../../asn1/gsm_map/gsm_map.cnf"
    tvbuff_t	*parameter_tvb;
	proto_tree	*subtree;

  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);


	if (!parameter_tvb)
                return offset;

    subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_GlobalCellId);
	be_cell_id_aux(parameter_tvb, subtree, actx->pinfo, 0, tvb_length_remaining(tvb,0), NULL, 0, 0);



  return offset;
}


static const value_string gsm_map_NetworkResource_vals[] = {
  {   0, "plmn" },
  {   1, "hlr" },
  {   2, "vlr" },
  {   3, "pvlr" },
  {   4, "controllingMSC" },
  {   5, "vmsc" },
  {   6, "eir" },
  {   7, "rss" },
  { 0, NULL }
};


static int
dissect_gsm_map_NetworkResource(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const value_string gsm_map_AdditionalNetworkResource_vals[] = {
  {   0, "sgsn" },
  {   1, "ggsn" },
  {   2, "gmlc" },
  {   3, "gsmSCF" },
  {   4, "nplr" },
  {   5, "auc" },
  {   6, "ue" },
  {   7, "mme" },
  { 0, NULL }
};


static int
dissect_gsm_map_AdditionalNetworkResource(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}



static int
dissect_gsm_map_NAEA_CIC(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_NAEA_PreferredCI_sequence[] = {
  { &hf_gsm_map_naea_PreferredCIC, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_NAEA_CIC },
  { &hf_gsm_map_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_NAEA_PreferredCI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_NAEA_PreferredCI_sequence, hf_index, ett_gsm_map_NAEA_PreferredCI);

  return offset;
}


static const value_string gsm_map_SubscriberIdentity_vals[] = {
  {   0, "imsi" },
  {   1, "msisdn" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_SubscriberIdentity_choice[] = {
  {   0, &hf_gsm_map_imsi        , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  {   1, &hf_gsm_map_msisdn      , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_SubscriberIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_SubscriberIdentity_choice, hf_index, ett_gsm_map_SubscriberIdentity,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_map_LCSClientExternalID_sequence[] = {
  { &hf_gsm_map_externalAddress, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_LCSClientExternalID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_LCSClientExternalID_sequence, hf_index, ett_gsm_map_LCSClientExternalID);

  return offset;
}


const value_string gsm_map_LCSClientInternalID_vals[] = {
  {   0, "broadcastService" },
  {   1, "o-andM-HPLMN" },
  {   2, "o-andM-VPLMN" },
  {   3, "anonymousLocation" },
  {   4, "targetMSsubscribedService" },
  { 0, NULL }
};


int
dissect_gsm_map_LCSClientInternalID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


const value_string gsm_map_LCSServiceTypeID_vals[] = {
  {   0, "emergencyServices" },
  {   1, "emergencyAlertServices" },
  {   2, "personTracking" },
  {   3, "fleetManagement" },
  {   4, "assetManagement" },
  {   5, "trafficCongestionReporting" },
  {   6, "roadsideAssistance" },
  {   7, "routingToNearestCommercialEnterprise" },
  {   8, "navigation" },
  {   9, "citySightseeing" },
  {  10, "localizedAdvertising" },
  {  11, "mobileYellowPages" },
  {  12, "trafficAndPublicTransportationInfo" },
  {  13, "weather" },
  {  14, "assetAndServiceFinding" },
  {  15, "gaming" },
  {  16, "findYourFriend" },
  {  17, "dating" },
  {  18, "chatting" },
  {  19, "routeFinding" },
  {  20, "whereAmI" },
  {  64, "serv64" },
  {  65, "serv65" },
  {  66, "serv66" },
  {  67, "serv67" },
  {  68, "serv68" },
  {  69, "serv69" },
  {  70, "serv70" },
  {  71, "serv71" },
  {  72, "serv72" },
  {  73, "serv73" },
  {  74, "serv74" },
  {  75, "serv75" },
  {  76, "serv76" },
  {  77, "serv77" },
  {  78, "serv78" },
  {  79, "serv79" },
  {  80, "serv80" },
  {  81, "serv81" },
  {  82, "serv82" },
  {  83, "serv83" },
  {  84, "serv84" },
  {  85, "serv85" },
  {  86, "serv86" },
  {  87, "serv87" },
  {  88, "serv88" },
  {  89, "serv89" },
  {  90, "serv90" },
  {  91, "serv91" },
  {  92, "serv92" },
  {  93, "serv93" },
  {  94, "serv94" },
  {  95, "serv95" },
  {  96, "serv96" },
  {  97, "serv97" },
  {  98, "serv98" },
  {  99, "serv99" },
  { 100, "serv100" },
  { 101, "serv101" },
  { 102, "serv102" },
  { 103, "serv103" },
  { 104, "serv104" },
  { 105, "serv105" },
  { 106, "serv106" },
  { 107, "serv107" },
  { 108, "serv108" },
  { 109, "serv109" },
  { 110, "serv110" },
  { 111, "serv111" },
  { 112, "serv112" },
  { 113, "serv113" },
  { 114, "serv114" },
  { 115, "serv115" },
  { 116, "serv116" },
  { 117, "serv117" },
  { 118, "serv118" },
  { 119, "serv119" },
  { 120, "serv120" },
  { 121, "serv121" },
  { 122, "serv122" },
  { 123, "serv123" },
  { 124, "serv124" },
  { 125, "serv125" },
  { 126, "serv126" },
  { 127, "serv127" },
  { 0, NULL }
};


int
dissect_gsm_map_LCSServiceTypeID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_map_PLMN_Id(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



int
dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



int
dissect_gsm_map_LAIFixedLength(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 577 "../../asn1/gsm_map/gsm_map.cnf"

        tvbuff_t        *parameter_tvb;
        proto_tree *subtree;

  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);


         if (!parameter_tvb)
                return offset;
        subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_LAIFixedLength);
        dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, subtree, 0, TRUE);



  return offset;
}


static const value_string gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_vals[] = {
  {   0, "cellGlobalIdOrServiceAreaIdFixedLength" },
  {   1, "laiFixedLength" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_choice[] = {
  {   0, &hf_gsm_map_cellGlobalIdOrServiceAreaIdFixedLength, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_CellGlobalIdOrServiceAreaIdFixedLength },
  {   1, &hf_gsm_map_laiFixedLength, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_LAIFixedLength },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_choice, hf_index, ett_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI,
                                 NULL);

  return offset;
}


static const value_string gsm_map_BasicServiceCode_vals[] = {
  {   2, "bearerService" },
  {   3, "teleservice" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_BasicServiceCode_choice[] = {
  {   2, &hf_gsm_map_bearerService, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_BearerServiceCode },
  {   3, &hf_gsm_map_teleservice , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_TeleserviceCode },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_BasicServiceCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_BasicServiceCode_choice, hf_index, ett_gsm_map_BasicServiceCode,
                                 NULL);

  return offset;
}


const value_string gsm_map_Ext_BasicServiceCode_vals[] = {
  {   2, "ext-BearerService" },
  {   3, "ext-Teleservice" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_Ext_BasicServiceCode_choice[] = {
  {   2, &hf_gsm_map_ext_BearerService, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BearerServiceCode },
  {   3, &hf_gsm_map_ext_Teleservice, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_TeleserviceCode },
  { 0, NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_Ext_BasicServiceCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_Ext_BasicServiceCode_choice, hf_index, ett_gsm_map_Ext_BasicServiceCode,
                                 NULL);

  return offset;
}


static const value_string gsm_map_EMLPP_Priority_vals[] = {
  {   6, "priorityLevelA" },
  {   5, "priorityLevelB" },
  {   0, "priorityLevel0" },
  {   1, "priorityLevel1" },
  {   2, "priorityLevel2" },
  {   3, "priorityLevel3" },
  {   4, "priorityLevel4" },
  { 0, NULL }
};


static int
dissect_gsm_map_EMLPP_Priority(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const ber_sequence_t gsm_map_EMLPP_Info_sequence[] = {
  { &hf_gsm_map_maximumentitledPriority, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_EMLPP_Priority },
  { &hf_gsm_map_defaultPriority, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_EMLPP_Priority },
  { &hf_gsm_map_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_EMLPP_Info(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_EMLPP_Info_sequence, hf_index, ett_gsm_map_EMLPP_Info);

  return offset;
}



static int
dissect_gsm_map_Ext_SS_Status(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 393 "../../asn1/gsm_map/gsm_map.cnf"
 /* Note Ext-SS-Status can have more than one byte */

 tvbuff_t	*parameter_tvb;
 guint8		octet;

  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);


 if (!parameter_tvb)
	return offset;

 octet = tvb_get_guint8(parameter_tvb,0);

 proto_tree_add_uint(tree, hf_gsm_map_Ss_Status_unused, parameter_tvb, 0,1,octet);
 if ((octet & 0x01)== 1)
	proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_q_bit, parameter_tvb, 0,1,octet);

 proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_p_bit, parameter_tvb, 0,1,octet);
 proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_r_bit, parameter_tvb, 0,1,octet);
 proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_a_bit, parameter_tvb, 0,1,octet);



  return offset;
}



static int
dissect_gsm_map_MaxMC_Bearers(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_map_MC_Bearers(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const ber_sequence_t gsm_map_MC_SS_Info_sequence[] = {
  { &hf_gsm_map_ss_Code     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ss_Status   , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status },
  { &hf_gsm_map_nbrSB       , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_MaxMC_Bearers },
  { &hf_gsm_map_nbrUser     , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_MC_Bearers },
  { &hf_gsm_map_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_MC_SS_Info(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_MC_SS_Info_sequence, hf_index, ett_gsm_map_MC_SS_Info);

  return offset;
}



int
dissect_gsm_map_AgeOfLocationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}

/*--- PDUs ---*/

int dissect_gsm_map_ISDN_AddressString_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
  int offset = 0;
  asn1_ctx_t asn1_ctx;
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
  offset = dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, &asn1_ctx, tree, hf_gsm_map_gsm_map_ISDN_AddressString_PDU);
  return offset;
}


/* --- Module MAP-SS-DataTypes --- --- ---                                    */



static int
dissect_gsm_map_ss_NoReplyConditionTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_map_ss_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);

  return offset;
}


static const ber_sequence_t gsm_map_ss_RegisterSS_Arg_sequence[] = {
  { &hf_gsm_map_ss_ss_Code  , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ss_basicService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_BasicServiceCode },
  { &hf_gsm_map_ss_forwardedToNumber, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
  { &hf_gsm_map_ss_forwardedToSubaddress, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_SubaddressString },
  { &hf_gsm_map_ss_noReplyConditionTime, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_NoReplyConditionTime },
  { &hf_gsm_map_ss_defaultPriority, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_EMLPP_Priority },
  { &hf_gsm_map_ss_nbrUser  , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_MC_Bearers },
  { &hf_gsm_map_ss_longFTN_Supported, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_NULL },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ss_RegisterSS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ss_RegisterSS_Arg_sequence, hf_index, ett_gsm_map_ss_RegisterSS_Arg);

  return offset;
}



int
dissect_gsm_map_ss_SS_Status(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 373 "../../asn1/gsm_map/gsm_map.cnf"

 tvbuff_t	*parameter_tvb;
 guint8		octet;

  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);


 if (!parameter_tvb)
	return offset;

 octet = tvb_get_guint8(parameter_tvb,0);

 proto_tree_add_uint(tree, hf_gsm_map_Ss_Status_unused, parameter_tvb, 0,1,octet);
 if ((octet & 0x01)== 1)
	proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_q_bit, parameter_tvb, 0,1,octet);

 proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_p_bit, parameter_tvb, 0,1,octet);
 proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_r_bit, parameter_tvb, 0,1,octet);
 proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_a_bit, parameter_tvb, 0,1,octet);



  return offset;
}



static int
dissect_gsm_map_ss_ForwardingOptions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

#line 484 "../../asn1/gsm_map/gsm_map.cnf"

	proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,FALSE);
	proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,FALSE);
	proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,FALSE);
	proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,FALSE);

  return offset;
}


static const ber_sequence_t gsm_map_ss_ForwardingFeature_sequence[] = {
  { &hf_gsm_map_ss_basicService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_BasicServiceCode },
  { &hf_gsm_map_ss_ss_Status, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_Status },
  { &hf_gsm_map_ss_forwardedToNumber_01, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ss_forwardedToSubaddress, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_SubaddressString },
  { &hf_gsm_map_ss_forwardingOptions, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_ForwardingOptions },
  { &hf_gsm_map_ss_noReplyConditionTime, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_NoReplyConditionTime },
  { &hf_gsm_map_ss_longForwardedToNumber, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_FTN_AddressString },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ss_ForwardingFeature(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ss_ForwardingFeature_sequence, hf_index, ett_gsm_map_ss_ForwardingFeature);

  return offset;
}


static const ber_sequence_t gsm_map_ss_ForwardingFeatureList_sequence_of[1] = {
  { &hf_gsm_map_ss_ForwardingFeatureList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_ForwardingFeature },
};

static int
dissect_gsm_map_ss_ForwardingFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ss_ForwardingFeatureList_sequence_of, hf_index, ett_gsm_map_ss_ForwardingFeatureList);

  return offset;
}


static const ber_sequence_t gsm_map_ss_ForwardingInfo_sequence[] = {
  { &hf_gsm_map_ss_ss_Code  , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ss_forwardingFeatureList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_ForwardingFeatureList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ss_ForwardingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ss_ForwardingInfo_sequence, hf_index, ett_gsm_map_ss_ForwardingInfo);

  return offset;
}


static const ber_sequence_t gsm_map_ss_CallBarringFeature_sequence[] = {
  { &hf_gsm_map_ss_basicService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_BasicServiceCode },
  { &hf_gsm_map_ss_ss_Status, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_Status },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ss_CallBarringFeature(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ss_CallBarringFeature_sequence, hf_index, ett_gsm_map_ss_CallBarringFeature);

  return offset;
}


static const ber_sequence_t gsm_map_ss_CallBarringFeatureList_sequence_of[1] = {
  { &hf_gsm_map_ss_CallBarringFeatureList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_CallBarringFeature },
};

static int
dissect_gsm_map_ss_CallBarringFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ss_CallBarringFeatureList_sequence_of, hf_index, ett_gsm_map_ss_CallBarringFeatureList);

  return offset;
}


static const ber_sequence_t gsm_map_ss_CallBarringInfo_sequence[] = {
  { &hf_gsm_map_ss_ss_Code  , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ss_callBarringFeatureList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_CallBarringFeatureList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ss_CallBarringInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ss_CallBarringInfo_sequence, hf_index, ett_gsm_map_ss_CallBarringInfo);

  return offset;
}


static const value_string gsm_map_ss_CliRestrictionOption_vals[] = {
  {   0, "permanent" },
  {   1, "temporaryDefaultRestricted" },
  {   2, "temporaryDefaultAllowed" },
  { 0, NULL }
};


static int
dissect_gsm_map_ss_CliRestrictionOption(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const value_string gsm_map_ss_OverrideCategory_vals[] = {
  {   0, "overrideEnabled" },
  {   1, "overrideDisabled" },
  { 0, NULL }
};


static int
dissect_gsm_map_ss_OverrideCategory(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const value_string gsm_map_ss_SS_SubscriptionOption_vals[] = {
  {   2, "cliRestrictionOption" },
  {   1, "overrideCategory" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_ss_SS_SubscriptionOption_choice[] = {
  {   2, &hf_gsm_map_ss_cliRestrictionOption, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CliRestrictionOption },
  {   1, &hf_gsm_map_ss_overrideCategory, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_OverrideCategory },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ss_SS_SubscriptionOption(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_ss_SS_SubscriptionOption_choice, hf_index, ett_gsm_map_ss_SS_SubscriptionOption,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ss_BasicServiceGroupList_sequence_of[1] = {
  { &hf_gsm_map_ss_BasicServiceGroupList_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gsm_map_BasicServiceCode },
};

static int
dissect_gsm_map_ss_BasicServiceGroupList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ss_BasicServiceGroupList_sequence_of, hf_index, ett_gsm_map_ss_BasicServiceGroupList);

  return offset;
}


static const ber_sequence_t gsm_map_ss_SS_Data_sequence[] = {
  { &hf_gsm_map_ss_ss_Code  , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ss_ss_Status, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_Status },
  { &hf_gsm_map_ss_ss_SubscriptionOption, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ss_SS_SubscriptionOption },
  { &hf_gsm_map_ss_basicServiceGroupList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_BasicServiceGroupList },
  { &hf_gsm_map_ss_defaultPriority, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_EMLPP_Priority },
  { &hf_gsm_map_ss_nbrUser  , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_MC_Bearers },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ss_SS_Data(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ss_SS_Data_sequence, hf_index, ett_gsm_map_ss_SS_Data);

  return offset;
}


const value_string gsm_map_ss_SS_Info_vals[] = {
  {   0, "forwardingInfo" },
  {   1, "callBarringInfo" },
  {   3, "ss-Data" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_ss_SS_Info_choice[] = {
  {   0, &hf_gsm_map_ss_forwardingInfo, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_ForwardingInfo },
  {   1, &hf_gsm_map_ss_callBarringInfo, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CallBarringInfo },
  {   3, &hf_gsm_map_ss_ss_Data  , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_Data },
  { 0, NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ss_SS_Info(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_ss_SS_Info_choice, hf_index, ett_gsm_map_ss_SS_Info,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ss_SS_ForBS_Code_sequence[] = {
  { &hf_gsm_map_ss_ss_Code  , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ss_basicService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_BasicServiceCode },
  { &hf_gsm_map_ss_longFTN_Supported, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_NULL },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ss_SS_ForBS_Code(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ss_SS_ForBS_Code_sequence, hf_index, ett_gsm_map_ss_SS_ForBS_Code);

  return offset;
}



static int
dissect_gsm_map_ss_CCBS_Index(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ss_CCBS_Feature_sequence[] = {
  { &hf_gsm_map_ss_ccbs_Index, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CCBS_Index },
  { &hf_gsm_map_ss_b_subscriberNumber, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ss_b_subscriberSubaddress, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_SubaddressString },
  { &hf_gsm_map_ss_basicServiceGroup, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_BasicServiceCode },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ss_CCBS_Feature(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ss_CCBS_Feature_sequence, hf_index, ett_gsm_map_ss_CCBS_Feature);

  return offset;
}


static const ber_sequence_t gsm_map_ss_CCBS_FeatureList_sequence_of[1] = {
  { &hf_gsm_map_ss_CCBS_FeatureList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_CCBS_Feature },
};

static int
dissect_gsm_map_ss_CCBS_FeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ss_CCBS_FeatureList_sequence_of, hf_index, ett_gsm_map_ss_CCBS_FeatureList);

  return offset;
}


static const ber_sequence_t gsm_map_ss_GenericServiceInfo_sequence[] = {
  { &hf_gsm_map_ss_ss_Status, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_SS_Status },
  { &hf_gsm_map_ss_cliRestrictionOption, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_CliRestrictionOption },
  { &hf_gsm_map_ss_maximumEntitledPriority, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_EMLPP_Priority },
  { &hf_gsm_map_ss_defaultPriority, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_EMLPP_Priority },
  { &hf_gsm_map_ss_ccbs_FeatureList, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CCBS_FeatureList },
  { &hf_gsm_map_ss_nbrSB    , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_MaxMC_Bearers },
  { &hf_gsm_map_ss_nbrUser  , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_MC_Bearers },
  { &hf_gsm_map_ss_nbrSN    , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_MC_Bearers },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ss_GenericServiceInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ss_GenericServiceInfo_sequence, hf_index, ett_gsm_map_ss_GenericServiceInfo);

  return offset;
}


const value_string gsm_map_ss_InterrogateSS_Res_vals[] = {
  {   0, "ss-Status" },
  {   2, "basicServiceGroupList" },
  {   3, "forwardingFeatureList" },
  {   4, "genericServiceInfo" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_ss_InterrogateSS_Res_choice[] = {
  {   0, &hf_gsm_map_ss_ss_Status, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_Status },
  {   2, &hf_gsm_map_ss_basicServiceGroupList, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_BasicServiceGroupList },
  {   3, &hf_gsm_map_ss_forwardingFeatureList, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_ForwardingFeatureList },
  {   4, &hf_gsm_map_ss_genericServiceInfo, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_GenericServiceInfo },
  { 0, NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ss_InterrogateSS_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_ss_InterrogateSS_Res_choice, hf_index, ett_gsm_map_ss_InterrogateSS_Res,
                                 NULL);

  return offset;
}



int
dissect_gsm_map_ss_USSD_DataCodingScheme(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 416 "../../asn1/gsm_map/gsm_map.cnf"
 /*The structure of the USSD-DataCodingScheme is defined by
  * the Cell Broadcast Data Coding Scheme as described in
  * TS 3GPP TS 23.038
  * TODO: Should dissect_cbs_data_coding_scheme return encoding type? - like 7bit Alphabet
  */
  tvbuff_t	*parameter_tvb;
  proto_tree *subtree;

  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);

  if (!parameter_tvb)
     return offset;
  subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_cbs_data_coding);
  dissect_cbs_data_coding_scheme(parameter_tvb, actx->pinfo, subtree);



  return offset;
}



int
dissect_gsm_map_ss_USSD_String(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 431 "../../asn1/gsm_map/gsm_map.cnf"

  tvbuff_t	*parameter_tvb;
  int			length;
  guint8		out_len;
  /* XXX - The maximum item label length is 240.  Does this really need to be 1024?
   * use ep_alloc ?
   */
  static unsigned char msgbuf[1024];
  gchar *utf8_text = NULL;
  GIConv cd;
  GError *l_conv_error = NULL;

  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);

  if (!parameter_tvb)
     return offset;

  length = tvb_length_remaining(parameter_tvb,0);
  switch(sms_encoding){
    case SMS_ENCODING_7BIT:
    case SMS_ENCODING_7BIT_LANG:
	out_len = gsm_sms_char_7bit_unpack(0, length, sizeof(msgbuf),
					   tvb_get_ptr(parameter_tvb, 0, length),
						       msgbuf);

	msgbuf[out_len] = '\0';
	utf8_text = gsm_sms_chars_to_utf8(msgbuf, out_len);
	proto_tree_add_text(tree, parameter_tvb, 0, length, "USSD String: %s", utf8_text);
	break;
    case SMS_ENCODING_8BIT:
	proto_tree_add_text(tree, parameter_tvb , 0, length, "USSD String: %s", tvb_get_ephemeral_string(parameter_tvb, 0, length));
	break;
    case SMS_ENCODING_UCS2:
    case SMS_ENCODING_UCS2_LANG:
	if ((cd = g_iconv_open("UTF-8","UCS-2BE")) != (GIConv) -1)
	{
	    utf8_text = g_convert_with_iconv(tvb_get_ptr(parameter_tvb, 0, length), length, cd, NULL, NULL, &l_conv_error);
	    if(!l_conv_error)
		proto_tree_add_text(tree, tvb, 0, length, "USSD String: %s", utf8_text);
	    else
		proto_tree_add_text(tree, tvb, 0, length, "USSD String: g_convert_with_iconv FAILED");

	    g_free(utf8_text);
	    g_iconv_close(cd);
	}
	else
	    proto_tree_add_text(tree, tvb, 0, length, "USSD String: g_iconv_open FAILED contact wireshark");

	break;
    default:
	break;
  }



  return offset;
}


static const ber_sequence_t gsm_map_ss_USSD_Arg_sequence[] = {
  { &hf_gsm_map_ss_ussd_DataCodingScheme, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_USSD_DataCodingScheme },
  { &hf_gsm_map_ss_ussd_String, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_USSD_String },
  { &hf_gsm_map_ss_alertingPattern, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_AlertingPattern },
  { &hf_gsm_map_ss_msisdn   , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ss_USSD_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ss_USSD_Arg_sequence, hf_index, ett_gsm_map_ss_USSD_Arg);

  return offset;
}


static const ber_sequence_t gsm_map_ss_USSD_Res_sequence[] = {
  { &hf_gsm_map_ss_ussd_DataCodingScheme, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_USSD_DataCodingScheme },
  { &hf_gsm_map_ss_ussd_String, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_USSD_String },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ss_USSD_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ss_USSD_Res_sequence, hf_index, ett_gsm_map_ss_USSD_Res);

  return offset;
}



static int
dissect_gsm_map_ss_Password(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
                                            actx, tree, tvb, offset, hf_index,
                                            NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ss_SS_List_sequence_of[1] = {
  { &hf_gsm_map_ss_SS_List_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code },
};

static int
dissect_gsm_map_ss_SS_List(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ss_SS_List_sequence_of, hf_index, ett_gsm_map_ss_SS_List);

  return offset;
}


static const ber_sequence_t gsm_map_ss_SS_EventSpecification_sequence_of[1] = {
  { &hf_gsm_map_ss_SS_EventSpecification_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_AddressString },
};

static int
dissect_gsm_map_ss_SS_EventSpecification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ss_SS_EventSpecification_sequence_of, hf_index, ett_gsm_map_ss_SS_EventSpecification);

  return offset;
}


static const value_string gsm_map_ss_CCBS_RequestState_vals[] = {
  {   0, "request" },
  {   1, "recall" },
  {   2, "active" },
  {   3, "completed" },
  {   4, "suspended" },
  {   5, "frozen" },
  {   6, "deleted" },
  { 0, NULL }
};


static int
dissect_gsm_map_ss_CCBS_RequestState(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ss_SS_InvocationNotificationArg_sequence[] = {
  { &hf_gsm_map_ss_imsi     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ss_msisdn   , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ss_ss_Event , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ss_ss_EventSpecification, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_EventSpecification },
  { &hf_gsm_map_ss_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ss_b_subscriberNumber, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ss_ccbs_RequestState, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CCBS_RequestState },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ss_SS_InvocationNotificationArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ss_SS_InvocationNotificationArg_sequence, hf_index, ett_gsm_map_ss_SS_InvocationNotificationArg);

  return offset;
}


static const ber_sequence_t gsm_map_ss_SS_InvocationNotificationRes_sequence[] = {
  { &hf_gsm_map_ss_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ss_SS_InvocationNotificationRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ss_SS_InvocationNotificationRes_sequence, hf_index, ett_gsm_map_ss_SS_InvocationNotificationRes);

  return offset;
}


static const asn_namedbit gsm_map_ss_ServiceIndicator_bits[] = {
  {  0, &hf_gsm_map_ss_ServiceIndicator_clir_invoked, -1, -1, "clir-invoked", NULL },
  {  1, &hf_gsm_map_ss_ServiceIndicator_camel_invoked, -1, -1, "camel-invoked", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_ss_ServiceIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_ss_ServiceIndicator_bits, hf_index, ett_gsm_map_ss_ServiceIndicator,
                                    NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ss_CCBS_Data_sequence[] = {
  { &hf_gsm_map_ss_ccbs_Feature, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CCBS_Feature },
  { &hf_gsm_map_ss_translatedB_Number, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ss_serviceIndicator, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_ServiceIndicator },
  { &hf_gsm_map_ss_callInfo , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo },
  { &hf_gsm_map_ss_networkSignalInfo, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ss_CCBS_Data(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ss_CCBS_Data_sequence, hf_index, ett_gsm_map_ss_CCBS_Data);

  return offset;
}


static const ber_sequence_t gsm_map_ss_RegisterCC_EntryArg_sequence[] = {
  { &hf_gsm_map_ss_ss_Code  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ss_ccbs_Data, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CCBS_Data },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ss_RegisterCC_EntryArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ss_RegisterCC_EntryArg_sequence, hf_index, ett_gsm_map_ss_RegisterCC_EntryArg);

  return offset;
}


static const ber_sequence_t gsm_map_ss_RegisterCC_EntryRes_sequence[] = {
  { &hf_gsm_map_ss_ccbs_Feature, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CCBS_Feature },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ss_RegisterCC_EntryRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ss_RegisterCC_EntryRes_sequence, hf_index, ett_gsm_map_ss_RegisterCC_EntryRes);

  return offset;
}


static const ber_sequence_t gsm_map_ss_EraseCC_EntryArg_sequence[] = {
  { &hf_gsm_map_ss_ss_Code  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ss_ccbs_Index, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CCBS_Index },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ss_EraseCC_EntryArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ss_EraseCC_EntryArg_sequence, hf_index, ett_gsm_map_ss_EraseCC_EntryArg);

  return offset;
}


static const ber_sequence_t gsm_map_ss_EraseCC_EntryRes_sequence[] = {
  { &hf_gsm_map_ss_ss_Code  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ss_ss_Status, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_Status },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ss_EraseCC_EntryRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ss_EraseCC_EntryRes_sequence, hf_index, ett_gsm_map_ss_EraseCC_EntryRes);

  return offset;
}


/* --- Module MAP-ER-DataTypes --- --- ---                                    */


static const value_string gsm_map_er_RoamingNotAllowedCause_vals[] = {
  {   0, "plmnRoamingNotAllowed" },
  {   3, "operatorDeterminedBarring" },
  { 0, NULL }
};


static int
dissect_gsm_map_er_RoamingNotAllowedCause(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const value_string gsm_map_er_AdditionalRoamingNotAllowedCause_vals[] = {
  {   0, "supportedRAT-TypesNotAllowed" },
  { 0, NULL }
};


static int
dissect_gsm_map_er_AdditionalRoamingNotAllowedCause(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_er_RoamingNotAllowedParam_sequence[] = {
  { &hf_gsm_map_er_roamingNotAllowedCause, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_RoamingNotAllowedCause },
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_er_additionalRoamingNotAllowedCause, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AdditionalRoamingNotAllowedCause },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_RoamingNotAllowedParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_RoamingNotAllowedParam_sequence, hf_index, ett_gsm_map_er_RoamingNotAllowedParam);

  return offset;
}


static const value_string gsm_map_er_CallBarringCause_vals[] = {
  {   0, "barringServiceActive" },
  {   1, "operatorBarring" },
  { 0, NULL }
};


static int
dissect_gsm_map_er_CallBarringCause(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}



static int
dissect_gsm_map_er_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);

  return offset;
}


static const ber_sequence_t gsm_map_er_ExtensibleCallBarredParam_sequence[] = {
  { &hf_gsm_map_er_callBarringCause, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_CallBarringCause },
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_er_unauthorisedMessageOriginator, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_ExtensibleCallBarredParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_ExtensibleCallBarredParam_sequence, hf_index, ett_gsm_map_er_ExtensibleCallBarredParam);

  return offset;
}


static const value_string gsm_map_er_CallBarredParam_vals[] = {
  {   0, "callBarringCause" },
  {   1, "extensibleCallBarredParam" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_er_CallBarredParam_choice[] = {
  {   0, &hf_gsm_map_er_callBarringCause, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_CallBarringCause },
  {   1, &hf_gsm_map_er_extensibleCallBarredParam, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_ExtensibleCallBarredParam },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_CallBarredParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_er_CallBarredParam_choice, hf_index, ett_gsm_map_er_CallBarredParam,
                                 NULL);

  return offset;
}


static const value_string gsm_map_er_CUG_RejectCause_vals[] = {
  {   0, "incomingCallsBarredWithinCUG" },
  {   1, "subscriberNotMemberOfCUG" },
  {   5, "requestedBasicServiceViolatesCUG-Constraints" },
  {   7, "calledPartySS-InteractionViolation" },
  { 0, NULL }
};


static int
dissect_gsm_map_er_CUG_RejectCause(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_er_CUG_RejectParam_sequence[] = {
  { &hf_gsm_map_er_cug_RejectCause, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_CUG_RejectCause },
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_CUG_RejectParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_CUG_RejectParam_sequence, hf_index, ett_gsm_map_er_CUG_RejectParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_SS_IncompatibilityCause_sequence[] = {
  { &hf_gsm_map_er_ss_Code  , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_er_basicService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_BasicServiceCode },
  { &hf_gsm_map_er_ss_Status, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_Status },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_SS_IncompatibilityCause(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_SS_IncompatibilityCause_sequence, hf_index, ett_gsm_map_er_SS_IncompatibilityCause);

  return offset;
}


static const value_string gsm_map_er_PW_RegistrationFailureCause_vals[] = {
  {   0, "undetermined" },
  {   1, "invalidFormat" },
  {   2, "newPasswordsMismatch" },
  { 0, NULL }
};


static int
dissect_gsm_map_er_PW_RegistrationFailureCause(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const value_string gsm_map_er_SM_EnumeratedDeliveryFailureCause_vals[] = {
  {   0, "memoryCapacityExceeded" },
  {   1, "equipmentProtocolError" },
  {   2, "equipmentNotSM-Equipped" },
  {   3, "unknownServiceCentre" },
  {   4, "sc-Congestion" },
  {   5, "invalidSME-Address" },
  {   6, "subscriberNotSC-Subscriber" },
  { 0, NULL }
};


static int
dissect_gsm_map_er_SM_EnumeratedDeliveryFailureCause(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_er_SM_DeliveryFailureCause_sequence[] = {
  { &hf_gsm_map_er_sm_EnumeratedDeliveryFailureCause, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_SM_EnumeratedDeliveryFailureCause },
  { &hf_gsm_map_er_diagnosticInfo, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo },
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_SM_DeliveryFailureCause(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 302 "../../asn1/gsm_map/gsm_map.cnf"
	/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_SM_DeliveryFailureCause_sequence, hf_index, ett_gsm_map_er_SM_DeliveryFailureCause);


        if (!actx->value_ptr)
                return offset;
        dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);



  return offset;
}



static int
dissect_gsm_map_er_AbsentSubscriberDiagnosticSM(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const ber_sequence_t gsm_map_er_AbsentSubscriberSM_Param_sequence[] = {
  { &hf_gsm_map_er_absentSubscriberDiagnosticSM, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM },
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_er_additionalAbsentSubscriberDiagnosticSM, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_AbsentSubscriberSM_Param(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_AbsentSubscriberSM_Param_sequence, hf_index, ett_gsm_map_er_AbsentSubscriberSM_Param);

  return offset;
}


static const value_string gsm_map_er_FailureCauseParam_vals[] = {
  {   0, "limitReachedOnNumberOfConcurrentLocationRequests" },
  { 0, NULL }
};


static int
dissect_gsm_map_er_FailureCauseParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_er_ExtensibleSystemFailureParam_sequence[] = {
  { &hf_gsm_map_er_networkResource, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_NetworkResource },
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_er_additionalNetworkResource, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AdditionalNetworkResource },
  { &hf_gsm_map_er_failureCauseParam, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_FailureCauseParam },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_ExtensibleSystemFailureParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_ExtensibleSystemFailureParam_sequence, hf_index, ett_gsm_map_er_ExtensibleSystemFailureParam);

  return offset;
}


static const value_string gsm_map_er_SystemFailureParam_vals[] = {
  {   0, "networkResource" },
  {   1, "extensibleSystemFailureParam" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_er_SystemFailureParam_choice[] = {
  {   0, &hf_gsm_map_er_networkResource, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_NetworkResource },
  {   1, &hf_gsm_map_er_extensibleSystemFailureParam, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_ExtensibleSystemFailureParam },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_SystemFailureParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_er_SystemFailureParam_choice, hf_index, ett_gsm_map_er_SystemFailureParam,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_map_er_DataMissingParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_DataMissingParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_DataMissingParam_sequence, hf_index, ett_gsm_map_er_DataMissingParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_UnexpectedDataParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_UnexpectedDataParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_UnexpectedDataParam_sequence, hf_index, ett_gsm_map_er_UnexpectedDataParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_FacilityNotSupParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_er_shapeOfLocationEstimateNotSupported, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_NULL },
  { &hf_gsm_map_er_neededLcsCapabilityNotSupportedInServingNode, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_FacilityNotSupParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_FacilityNotSupParam_sequence, hf_index, ett_gsm_map_er_FacilityNotSupParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_OR_NotAllowedParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_OR_NotAllowedParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_OR_NotAllowedParam_sequence, hf_index, ett_gsm_map_er_OR_NotAllowedParam);

  return offset;
}


static const value_string gsm_map_er_UnknownSubscriberDiagnostic_vals[] = {
  {   0, "imsiUnknown" },
  {   1, "gprs-eps-SubscriptionUnknown" },
  {   2, "npdbMismatch" },
  { 0, NULL }
};


static int
dissect_gsm_map_er_UnknownSubscriberDiagnostic(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_er_UnknownSubscriberParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_er_unknownSubscriberDiagnostic, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_UnknownSubscriberDiagnostic },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_UnknownSubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_UnknownSubscriberParam_sequence, hf_index, ett_gsm_map_er_UnknownSubscriberParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_NumberChangedParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_NumberChangedParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_NumberChangedParam_sequence, hf_index, ett_gsm_map_er_NumberChangedParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_UnidentifiedSubParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_UnidentifiedSubParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_UnidentifiedSubParam_sequence, hf_index, ett_gsm_map_er_UnidentifiedSubParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_IllegalSubscriberParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_IllegalSubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_IllegalSubscriberParam_sequence, hf_index, ett_gsm_map_er_IllegalSubscriberParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_IllegalEquipmentParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_IllegalEquipmentParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_IllegalEquipmentParam_sequence, hf_index, ett_gsm_map_er_IllegalEquipmentParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_BearerServNotProvParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_BearerServNotProvParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_BearerServNotProvParam_sequence, hf_index, ett_gsm_map_er_BearerServNotProvParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_TeleservNotProvParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_TeleservNotProvParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_TeleservNotProvParam_sequence, hf_index, ett_gsm_map_er_TeleservNotProvParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_TracingBufferFullParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_TracingBufferFullParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_TracingBufferFullParam_sequence, hf_index, ett_gsm_map_er_TracingBufferFullParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_NoRoamingNbParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_NoRoamingNbParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_NoRoamingNbParam_sequence, hf_index, ett_gsm_map_er_NoRoamingNbParam);

  return offset;
}


static const value_string gsm_map_er_AbsentSubscriberReason_vals[] = {
  {   0, "imsiDetach" },
  {   1, "restrictedArea" },
  {   2, "noPageResponse" },
  {   3, "purgedMS" },
  {   4, "mtRoamingRetry" },
  { 0, NULL }
};


static int
dissect_gsm_map_er_AbsentSubscriberReason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_er_AbsentSubscriberParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_er_absentSubscriberReason, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberReason },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_AbsentSubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_AbsentSubscriberParam_sequence, hf_index, ett_gsm_map_er_AbsentSubscriberParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_BusySubscriberParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_er_ccbs_Possible, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_NULL },
  { &hf_gsm_map_er_ccbs_Busy, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_BusySubscriberParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_BusySubscriberParam_sequence, hf_index, ett_gsm_map_er_BusySubscriberParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_NoSubscriberReplyParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_NoSubscriberReplyParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_NoSubscriberReplyParam_sequence, hf_index, ett_gsm_map_er_NoSubscriberReplyParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_ForwardingViolationParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_ForwardingViolationParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_ForwardingViolationParam_sequence, hf_index, ett_gsm_map_er_ForwardingViolationParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_ForwardingFailedParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_ForwardingFailedParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_ForwardingFailedParam_sequence, hf_index, ett_gsm_map_er_ForwardingFailedParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_ATI_NotAllowedParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_ATI_NotAllowedParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_ATI_NotAllowedParam_sequence, hf_index, ett_gsm_map_er_ATI_NotAllowedParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_ATSI_NotAllowedParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_ATSI_NotAllowedParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_ATSI_NotAllowedParam_sequence, hf_index, ett_gsm_map_er_ATSI_NotAllowedParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_ATM_NotAllowedParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_ATM_NotAllowedParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_ATM_NotAllowedParam_sequence, hf_index, ett_gsm_map_er_ATM_NotAllowedParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_IllegalSS_OperationParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_IllegalSS_OperationParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_IllegalSS_OperationParam_sequence, hf_index, ett_gsm_map_er_IllegalSS_OperationParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_SS_NotAvailableParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_SS_NotAvailableParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_SS_NotAvailableParam_sequence, hf_index, ett_gsm_map_er_SS_NotAvailableParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_SS_SubscriptionViolationParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_SS_SubscriptionViolationParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_SS_SubscriptionViolationParam_sequence, hf_index, ett_gsm_map_er_SS_SubscriptionViolationParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_InformationNotAvailableParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_InformationNotAvailableParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_InformationNotAvailableParam_sequence, hf_index, ett_gsm_map_er_InformationNotAvailableParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_SubBusyForMT_SMS_Param_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_er_gprsConnectionSuspended, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_SubBusyForMT_SMS_Param(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_SubBusyForMT_SMS_Param_sequence, hf_index, ett_gsm_map_er_SubBusyForMT_SMS_Param);

  return offset;
}


static const ber_sequence_t gsm_map_er_MessageWaitListFullParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_MessageWaitListFullParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_MessageWaitListFullParam_sequence, hf_index, ett_gsm_map_er_MessageWaitListFullParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_ResourceLimitationParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_ResourceLimitationParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_ResourceLimitationParam_sequence, hf_index, ett_gsm_map_er_ResourceLimitationParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_NoGroupCallNbParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_NoGroupCallNbParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_NoGroupCallNbParam_sequence, hf_index, ett_gsm_map_er_NoGroupCallNbParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_IncompatibleTerminalParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_IncompatibleTerminalParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_IncompatibleTerminalParam_sequence, hf_index, ett_gsm_map_er_IncompatibleTerminalParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_ShortTermDenialParam_sequence[] = {
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_ShortTermDenialParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_ShortTermDenialParam_sequence, hf_index, ett_gsm_map_er_ShortTermDenialParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_LongTermDenialParam_sequence[] = {
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_LongTermDenialParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_LongTermDenialParam_sequence, hf_index, ett_gsm_map_er_LongTermDenialParam);

  return offset;
}


static const ber_sequence_t gsm_map_er_UnauthorizedRequestingNetwork_Param_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_UnauthorizedRequestingNetwork_Param(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_UnauthorizedRequestingNetwork_Param_sequence, hf_index, ett_gsm_map_er_UnauthorizedRequestingNetwork_Param);

  return offset;
}


const value_string gsm_map_er_UnauthorizedLCSClient_Diagnostic_vals[] = {
  {   0, "noAdditionalInformation" },
  {   1, "clientNotInMSPrivacyExceptionList" },
  {   2, "callToClientNotSetup" },
  {   3, "privacyOverrideNotApplicable" },
  {   4, "disallowedByLocalRegulatoryRequirements" },
  {   5, "unauthorizedPrivacyClass" },
  {   6, "unauthorizedCallSessionUnrelatedExternalClient" },
  {   7, "unauthorizedCallSessionRelatedExternalClient" },
  { 0, NULL }
};


int
dissect_gsm_map_er_UnauthorizedLCSClient_Diagnostic(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_er_UnauthorizedLCSClient_Param_sequence[] = {
  { &hf_gsm_map_er_unauthorizedLCSClient_Diagnostic, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_UnauthorizedLCSClient_Diagnostic },
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_UnauthorizedLCSClient_Param(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_UnauthorizedLCSClient_Param_sequence, hf_index, ett_gsm_map_er_UnauthorizedLCSClient_Param);

  return offset;
}


const value_string gsm_map_er_PositionMethodFailure_Diagnostic_vals[] = {
  {   0, "congestion" },
  {   1, "insufficientResources" },
  {   2, "insufficientMeasurementData" },
  {   3, "inconsistentMeasurementData" },
  {   4, "locationProcedureNotCompleted" },
  {   5, "locationProcedureNotSupportedByTargetMS" },
  {   6, "qoSNotAttainable" },
  {   7, "positionMethodNotAvailableInNetwork" },
  {   8, "positionMethodNotAvailableInLocationArea" },
  { 0, NULL }
};


int
dissect_gsm_map_er_PositionMethodFailure_Diagnostic(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_er_PositionMethodFailure_Param_sequence[] = {
  { &hf_gsm_map_er_positionMethodFailure_Diagnostic, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_PositionMethodFailure_Diagnostic },
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_PositionMethodFailure_Param(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_PositionMethodFailure_Param_sequence, hf_index, ett_gsm_map_er_PositionMethodFailure_Param);

  return offset;
}


static const ber_sequence_t gsm_map_er_UnknownOrUnreachableLCSClient_Param_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_UnknownOrUnreachableLCSClient_Param(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_UnknownOrUnreachableLCSClient_Param_sequence, hf_index, ett_gsm_map_er_UnknownOrUnreachableLCSClient_Param);

  return offset;
}


static const ber_sequence_t gsm_map_er_MM_EventNotSupported_Param_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_MM_EventNotSupported_Param(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_MM_EventNotSupported_Param_sequence, hf_index, ett_gsm_map_er_MM_EventNotSupported_Param);

  return offset;
}


static const ber_sequence_t gsm_map_er_TargetCellOutsideGCA_Param_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_TargetCellOutsideGCA_Param(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_TargetCellOutsideGCA_Param_sequence, hf_index, ett_gsm_map_er_TargetCellOutsideGCA_Param);

  return offset;
}


static const ber_sequence_t gsm_map_er_OngoingGroupCallParam_sequence[] = {
  { &hf_gsm_map_er_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_er_OngoingGroupCallParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_er_OngoingGroupCallParam_sequence, hf_index, ett_gsm_map_er_OngoingGroupCallParam);

  return offset;
}


/* --- Module MAP-SM-DataTypes --- --- ---                                    */



static int
dissect_gsm_map_sm_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);

  return offset;
}



static int
dissect_gsm_map_sm_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);

  return offset;
}



static int
dissect_gsm_map_sm_SM_RP_MTI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_map_sm_SM_RP_SMEA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const value_string gsm_map_sm_SM_DeliveryNotIntended_vals[] = {
  {   0, "onlyIMSI-requested" },
  {   1, "onlyMCC-MNC-requested" },
  { 0, NULL }
};


static int
dissect_gsm_map_sm_SM_DeliveryNotIntended(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_sm_RoutingInfoForSM_Arg_sequence[] = {
  { &hf_gsm_map_sm_msisdn   , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_sm_sm_RP_PRI, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_BOOLEAN },
  { &hf_gsm_map_sm_serviceCentreAddress, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
  { &hf_gsm_map_sm_extensionContainer, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_sm_gprsSupportIndicator, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL },
  { &hf_gsm_map_sm_sm_RP_MTI, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SM_RP_MTI },
  { &hf_gsm_map_sm_sm_RP_SMEA, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SM_RP_SMEA },
  { &hf_gsm_map_sm_sm_deliveryNotIntended, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SM_DeliveryNotIntended },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_sm_RoutingInfoForSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_sm_RoutingInfoForSM_Arg_sequence, hf_index, ett_gsm_map_sm_RoutingInfoForSM_Arg);

  return offset;
}


static const value_string gsm_map_sm_Additional_Number_vals[] = {
  {   0, "msc-Number" },
  {   1, "sgsn-Number" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_sm_Additional_Number_choice[] = {
  {   0, &hf_gsm_map_sm_msc_Number, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  {   1, &hf_gsm_map_sm_sgsn_Number, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_sm_Additional_Number(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_sm_Additional_Number_choice, hf_index, ett_gsm_map_sm_Additional_Number,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_map_sm_LocationInfoWithLMSI_sequence[] = {
  { &hf_gsm_map_sm_networkNode_Number, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_sm_lmsi     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_LMSI },
  { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_sm_gprsNodeIndicator, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL },
  { &hf_gsm_map_sm_additional_Number, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_sm_Additional_Number },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_sm_LocationInfoWithLMSI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_sm_LocationInfoWithLMSI_sequence, hf_index, ett_gsm_map_sm_LocationInfoWithLMSI);

  return offset;
}


static const ber_sequence_t gsm_map_sm_RoutingInfoForSM_Res_sequence[] = {
  { &hf_gsm_map_sm_imsi     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_sm_locationInfoWithLMSI, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_LocationInfoWithLMSI },
  { &hf_gsm_map_sm_mwd_Set  , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_BOOLEAN },
  { &hf_gsm_map_sm_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_sm_RoutingInfoForSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_sm_RoutingInfoForSM_Res_sequence, hf_index, ett_gsm_map_sm_RoutingInfoForSM_Res);

  return offset;
}


static const value_string gsm_map_sm_SM_RP_DA_vals[] = {
  {   0, "imsi" },
  {   1, "lmsi" },
  {   4, "serviceCentreAddressDA" },
  {   5, "noSM-RP-DA" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_sm_SM_RP_DA_choice[] = {
  {   0, &hf_gsm_map_sm_imsi     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  {   1, &hf_gsm_map_sm_lmsi     , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI },
  {   4, &hf_gsm_map_sm_serviceCentreAddressDA, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
  {   5, &hf_gsm_map_sm_noSM_RP_DA, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_sm_SM_RP_DA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_sm_SM_RP_DA_choice, hf_index, ett_gsm_map_sm_SM_RP_DA,
                                 NULL);

  return offset;
}



static int
dissect_gsm_map_sm_T_msisdn(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 291 "../../asn1/gsm_map/gsm_map.cnf"
actx->pinfo->p2p_dir = P2P_DIR_RECV;
   offset = dissect_gsm_map_ISDN_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);




  return offset;
}



static int
dissect_gsm_map_sm_T_serviceCentreAddressOA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 283 "../../asn1/gsm_map/gsm_map.cnf"
	actx->pinfo->p2p_dir = P2P_DIR_SENT;
  offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);




  return offset;
}


static const value_string gsm_map_sm_SM_RP_OA_vals[] = {
  {   2, "msisdn" },
  {   4, "serviceCentreAddressOA" },
  {   5, "noSM-RP-OA" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_sm_SM_RP_OA_choice[] = {
  {   2, &hf_gsm_map_sm_msisdn_01, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_T_msisdn },
  {   4, &hf_gsm_map_sm_serviceCentreAddressOA, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_T_serviceCentreAddressOA },
  {   5, &hf_gsm_map_sm_noSM_RP_OA, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_sm_SM_RP_OA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_sm_SM_RP_OA_choice, hf_index, ett_gsm_map_sm_SM_RP_OA,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_map_sm_MO_ForwardSM_Arg_sequence[] = {
  { &hf_gsm_map_sm_sm_RP_DA , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_sm_SM_RP_DA },
  { &hf_gsm_map_sm_sm_RP_OA , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_sm_SM_RP_OA },
  { &hf_gsm_map_sm_sm_RP_UI , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo },
  { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_sm_imsi     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_sm_MO_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 319 "../../asn1/gsm_map/gsm_map.cnf"

	/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_sm_MO_ForwardSM_Arg_sequence, hf_index, ett_gsm_map_sm_MO_ForwardSM_Arg);


	if (!actx->value_ptr)
		return offset;
	dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);



  return offset;
}


static const ber_sequence_t gsm_map_sm_MO_ForwardSM_Res_sequence[] = {
  { &hf_gsm_map_sm_sm_RP_UI , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo },
  { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_sm_MO_ForwardSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 328 "../../asn1/gsm_map/gsm_map.cnf"

        /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_sm_MO_ForwardSM_Res_sequence, hf_index, ett_gsm_map_sm_MO_ForwardSM_Res);


        if (!actx->value_ptr)
                return offset;
        dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);



  return offset;
}


static const ber_sequence_t gsm_map_sm_MT_ForwardSM_Arg_sequence[] = {
  { &hf_gsm_map_sm_sm_RP_DA , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_sm_SM_RP_DA },
  { &hf_gsm_map_sm_sm_RP_OA , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_sm_SM_RP_OA },
  { &hf_gsm_map_sm_sm_RP_UI , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo },
  { &hf_gsm_map_sm_moreMessagesToSend, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_sm_NULL },
  { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_sm_MT_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 337 "../../asn1/gsm_map/gsm_map.cnf"

	/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_sm_MT_ForwardSM_Arg_sequence, hf_index, ett_gsm_map_sm_MT_ForwardSM_Arg);


	if (!actx->value_ptr)
		return offset;
	dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);



  return offset;
}


static const ber_sequence_t gsm_map_sm_MT_ForwardSM_Res_sequence[] = {
  { &hf_gsm_map_sm_sm_RP_UI , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo },
  { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_sm_MT_ForwardSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 346 "../../asn1/gsm_map/gsm_map.cnf"

        /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_sm_MT_ForwardSM_Res_sequence, hf_index, ett_gsm_map_sm_MT_ForwardSM_Res);


        if (!actx->value_ptr)
                return offset;
        dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);



  return offset;
}


static const value_string gsm_map_sm_SM_DeliveryOutcome_vals[] = {
  {   0, "memoryCapacityExceeded" },
  {   1, "absentSubscriber" },
  {   2, "successfulTransfer" },
  { 0, NULL }
};


static int
dissect_gsm_map_sm_SM_DeliveryOutcome(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_sm_ReportSM_DeliveryStatusArg_sequence[] = {
  { &hf_gsm_map_sm_msisdn   , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_sm_serviceCentreAddress, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_AddressString },
  { &hf_gsm_map_sm_sm_DeliveryOutcome, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_sm_SM_DeliveryOutcome },
  { &hf_gsm_map_sm_absentSubscriberDiagnosticSM, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM },
  { &hf_gsm_map_sm_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_sm_gprsSupportIndicator, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL },
  { &hf_gsm_map_sm_deliveryOutcomeIndicator, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL },
  { &hf_gsm_map_sm_additionalSM_DeliveryOutcome, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SM_DeliveryOutcome },
  { &hf_gsm_map_sm_additionalAbsentSubscriberDiagnosticSM, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM },
  { &hf_gsm_map_sm_ip_sm_gw_Indicator, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL },
  { &hf_gsm_map_sm_ip_sm_gw_sm_deliveryOutcome, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_SM_DeliveryOutcome },
  { &hf_gsm_map_sm_ip_sm_gw_absentSubscriberDiagnosticSM, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_sm_ReportSM_DeliveryStatusArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_sm_ReportSM_DeliveryStatusArg_sequence, hf_index, ett_gsm_map_sm_ReportSM_DeliveryStatusArg);

  return offset;
}


static const ber_sequence_t gsm_map_sm_ReportSM_DeliveryStatusRes_sequence[] = {
  { &hf_gsm_map_sm_storedMSISDN, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_sm_ReportSM_DeliveryStatusRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_sm_ReportSM_DeliveryStatusRes_sequence, hf_index, ett_gsm_map_sm_ReportSM_DeliveryStatusRes);

  return offset;
}


static const ber_sequence_t gsm_map_sm_AlertServiceCentreArg_sequence[] = {
  { &hf_gsm_map_sm_msisdn   , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_sm_serviceCentreAddress, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_AddressString },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_sm_AlertServiceCentreArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_sm_AlertServiceCentreArg_sequence, hf_index, ett_gsm_map_sm_AlertServiceCentreArg);

  return offset;
}


static const asn_namedbit gsm_map_sm_MW_Status_bits[] = {
  {  0, &hf_gsm_map_sm_MW_Status_sc_AddressNotIncluded, -1, -1, "sc-AddressNotIncluded", NULL },
  {  1, &hf_gsm_map_sm_MW_Status_mnrf_Set, -1, -1, "mnrf-Set", NULL },
  {  2, &hf_gsm_map_sm_MW_Status_mcef_Set, -1, -1, "mcef-Set", NULL },
  {  3, &hf_gsm_map_sm_MW_Status_mnrg_Set, -1, -1, "mnrg-Set", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_sm_MW_Status(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_sm_MW_Status_bits, hf_index, ett_gsm_map_sm_MW_Status,
                                    NULL);

  return offset;
}


static const ber_sequence_t gsm_map_sm_InformServiceCentreArg_sequence[] = {
  { &hf_gsm_map_sm_storedMSISDN, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_sm_mw_Status, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_sm_MW_Status },
  { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_sm_absentSubscriberDiagnosticSM, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM },
  { &hf_gsm_map_sm_additionalAbsentSubscriberDiagnosticSM, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_sm_InformServiceCentreArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_sm_InformServiceCentreArg_sequence, hf_index, ett_gsm_map_sm_InformServiceCentreArg);

  return offset;
}


static const value_string gsm_map_sm_AlertReason_vals[] = {
  {   0, "ms-Present" },
  {   1, "memoryAvailable" },
  { 0, NULL }
};


static int
dissect_gsm_map_sm_AlertReason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_sm_ReadyForSM_Arg_sequence[] = {
  { &hf_gsm_map_sm_imsi     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_sm_alertReason, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_sm_AlertReason },
  { &hf_gsm_map_sm_alertReasonIndicator, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_sm_NULL },
  { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_sm_additionalAlertReasonIndicator, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_sm_ReadyForSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_sm_ReadyForSM_Arg_sequence, hf_index, ett_gsm_map_sm_ReadyForSM_Arg);

  return offset;
}


static const ber_sequence_t gsm_map_sm_ReadyForSM_Res_sequence[] = {
  { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_sm_ReadyForSM_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_sm_ReadyForSM_Res_sequence, hf_index, ett_gsm_map_sm_ReadyForSM_Res);

  return offset;
}


static const ber_sequence_t gsm_map_sm_MT_ForwardSM_VGCS_Arg_sequence[] = {
  { &hf_gsm_map_sm_asciCallReference, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ASCI_CallReference },
  { &hf_gsm_map_sm_sm_RP_OA , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_sm_SM_RP_OA },
  { &hf_gsm_map_sm_sm_RP_UI , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo },
  { &hf_gsm_map_sm_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_sm_MT_ForwardSM_VGCS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 355 "../../asn1/gsm_map/gsm_map.cnf"

        /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_sm_MT_ForwardSM_VGCS_Arg_sequence, hf_index, ett_gsm_map_sm_MT_ForwardSM_VGCS_Arg);


        if (!actx->value_ptr)
                return offset;
        dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);



  return offset;
}


static const ber_sequence_t gsm_map_sm_DispatcherList_sequence_of[1] = {
  { &hf_gsm_map_sm_DispatcherList_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
};

static int
dissect_gsm_map_sm_DispatcherList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_sm_DispatcherList_sequence_of, hf_index, ett_gsm_map_sm_DispatcherList);

  return offset;
}


static const ber_sequence_t gsm_map_sm_MT_ForwardSM_VGCS_Res_sequence[] = {
  { &hf_gsm_map_sm_sm_RP_UI , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_SignalInfo },
  { &hf_gsm_map_sm_dispatcherList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_DispatcherList },
  { &hf_gsm_map_sm_ongoingCall, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_sm_NULL },
  { &hf_gsm_map_sm_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_sm_MT_ForwardSM_VGCS_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 364 "../../asn1/gsm_map/gsm_map.cnf"

        /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_sm_MT_ForwardSM_VGCS_Res_sequence, hf_index, ett_gsm_map_sm_MT_ForwardSM_VGCS_Res);


        if (!actx->value_ptr)
                return offset;
        dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);



  return offset;
}


/* --- Module MAP-OM-DataTypes --- --- ---                                    */



static int
dissect_gsm_map_om_TraceReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_om_TraceType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_map_om_TraceReference2(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const value_string gsm_map_om_TraceDepth_vals[] = {
  {   0, "minimum" },
  {   1, "medium" },
  {   2, "maximum" },
  { 0, NULL }
};


static int
dissect_gsm_map_om_TraceDepth(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_om_TraceDepthList_sequence[] = {
  { &hf_gsm_map_om_msc_s_TraceDepth, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth },
  { &hf_gsm_map_om_mgw_TraceDepth, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth },
  { &hf_gsm_map_om_sgsn_TraceDepth, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth },
  { &hf_gsm_map_om_ggsn_TraceDepth, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth },
  { &hf_gsm_map_om_rnc_TraceDepth, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth },
  { &hf_gsm_map_om_bmsc_TraceDepth, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth },
  { &hf_gsm_map_om_mme_TraceDepth, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth },
  { &hf_gsm_map_om_sgw_TraceDepth, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth },
  { &hf_gsm_map_om_pgw_TraceDepth, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth },
  { &hf_gsm_map_om_eNB_TraceDepth, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_om_TraceDepthList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_om_TraceDepthList_sequence, hf_index, ett_gsm_map_om_TraceDepthList);

  return offset;
}


static const asn_namedbit gsm_map_om_TraceNE_TypeList_bits[] = {
  {  0, &hf_gsm_map_om_TraceNE_TypeList_msc_s, -1, -1, "msc-s", NULL },
  {  1, &hf_gsm_map_om_TraceNE_TypeList_mgw, -1, -1, "mgw", NULL },
  {  2, &hf_gsm_map_om_TraceNE_TypeList_sgsn, -1, -1, "sgsn", NULL },
  {  3, &hf_gsm_map_om_TraceNE_TypeList_ggsn, -1, -1, "ggsn", NULL },
  {  4, &hf_gsm_map_om_TraceNE_TypeList_rnc, -1, -1, "rnc", NULL },
  {  5, &hf_gsm_map_om_TraceNE_TypeList_bm_sc, -1, -1, "bm-sc", NULL },
  {  6, &hf_gsm_map_om_TraceNE_TypeList_mme, -1, -1, "mme", NULL },
  {  7, &hf_gsm_map_om_TraceNE_TypeList_sgw, -1, -1, "sgw", NULL },
  {  8, &hf_gsm_map_om_TraceNE_TypeList_pgw, -1, -1, "pgw", NULL },
  {  9, &hf_gsm_map_om_TraceNE_TypeList_eNB, -1, -1, "eNB", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_TraceNE_TypeList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_TraceNE_TypeList_bits, hf_index, ett_gsm_map_om_TraceNE_TypeList,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_om_MSC_S_InterfaceList_bits[] = {
  {  0, &hf_gsm_map_om_MSC_S_InterfaceList_a, -1, -1, "a", NULL },
  {  1, &hf_gsm_map_om_MSC_S_InterfaceList_iu, -1, -1, "iu", NULL },
  {  2, &hf_gsm_map_om_MSC_S_InterfaceList_mc, -1, -1, "mc", NULL },
  {  3, &hf_gsm_map_om_MSC_S_InterfaceList_map_g, -1, -1, "map-g", NULL },
  {  4, &hf_gsm_map_om_MSC_S_InterfaceList_map_b, -1, -1, "map-b", NULL },
  {  5, &hf_gsm_map_om_MSC_S_InterfaceList_map_e, -1, -1, "map-e", NULL },
  {  6, &hf_gsm_map_om_MSC_S_InterfaceList_map_f, -1, -1, "map-f", NULL },
  {  7, &hf_gsm_map_om_MSC_S_InterfaceList_cap, -1, -1, "cap", NULL },
  {  8, &hf_gsm_map_om_MSC_S_InterfaceList_map_d, -1, -1, "map-d", NULL },
  {  9, &hf_gsm_map_om_MSC_S_InterfaceList_map_c, -1, -1, "map-c", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_MSC_S_InterfaceList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_MSC_S_InterfaceList_bits, hf_index, ett_gsm_map_om_MSC_S_InterfaceList,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_om_MGW_InterfaceList_bits[] = {
  {  0, &hf_gsm_map_om_MGW_InterfaceList_mc, -1, -1, "mc", NULL },
  {  1, &hf_gsm_map_om_MGW_InterfaceList_nb_up, -1, -1, "nb-up", NULL },
  {  2, &hf_gsm_map_om_MGW_InterfaceList_iu_up, -1, -1, "iu-up", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_MGW_InterfaceList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_MGW_InterfaceList_bits, hf_index, ett_gsm_map_om_MGW_InterfaceList,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_om_SGSN_InterfaceList_bits[] = {
  {  0, &hf_gsm_map_om_SGSN_InterfaceList_gb, -1, -1, "gb", NULL },
  {  1, &hf_gsm_map_om_SGSN_InterfaceList_iu, -1, -1, "iu", NULL },
  {  2, &hf_gsm_map_om_SGSN_InterfaceList_gn, -1, -1, "gn", NULL },
  {  3, &hf_gsm_map_om_SGSN_InterfaceList_map_gr, -1, -1, "map-gr", NULL },
  {  4, &hf_gsm_map_om_SGSN_InterfaceList_map_gd, -1, -1, "map-gd", NULL },
  {  5, &hf_gsm_map_om_SGSN_InterfaceList_map_gf, -1, -1, "map-gf", NULL },
  {  6, &hf_gsm_map_om_SGSN_InterfaceList_gs, -1, -1, "gs", NULL },
  {  7, &hf_gsm_map_om_SGSN_InterfaceList_ge, -1, -1, "ge", NULL },
  {  8, &hf_gsm_map_om_SGSN_InterfaceList_s3, -1, -1, "s3", NULL },
  {  9, &hf_gsm_map_om_SGSN_InterfaceList_s4, -1, -1, "s4", NULL },
  { 10, &hf_gsm_map_om_SGSN_InterfaceList_s6d, -1, -1, "s6d", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_SGSN_InterfaceList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_SGSN_InterfaceList_bits, hf_index, ett_gsm_map_om_SGSN_InterfaceList,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_om_GGSN_InterfaceList_bits[] = {
  {  0, &hf_gsm_map_om_GGSN_InterfaceList_gn, -1, -1, "gn", NULL },
  {  1, &hf_gsm_map_om_GGSN_InterfaceList_gi, -1, -1, "gi", NULL },
  {  2, &hf_gsm_map_om_GGSN_InterfaceList_gmb, -1, -1, "gmb", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_GGSN_InterfaceList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_GGSN_InterfaceList_bits, hf_index, ett_gsm_map_om_GGSN_InterfaceList,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_om_RNC_InterfaceList_bits[] = {
  {  0, &hf_gsm_map_om_RNC_InterfaceList_iu, -1, -1, "iu", NULL },
  {  1, &hf_gsm_map_om_RNC_InterfaceList_iur, -1, -1, "iur", NULL },
  {  2, &hf_gsm_map_om_RNC_InterfaceList_iub, -1, -1, "iub", NULL },
  {  3, &hf_gsm_map_om_RNC_InterfaceList_uu, -1, -1, "uu", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_RNC_InterfaceList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_RNC_InterfaceList_bits, hf_index, ett_gsm_map_om_RNC_InterfaceList,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_om_BMSC_InterfaceList_bits[] = {
  {  0, &hf_gsm_map_om_BMSC_InterfaceList_gmb, -1, -1, "gmb", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_BMSC_InterfaceList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_BMSC_InterfaceList_bits, hf_index, ett_gsm_map_om_BMSC_InterfaceList,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_om_MME_InterfaceList_bits[] = {
  {  0, &hf_gsm_map_om_MME_InterfaceList_s1_mme, -1, -1, "s1-mme", NULL },
  {  1, &hf_gsm_map_om_MME_InterfaceList_s3, -1, -1, "s3", NULL },
  {  2, &hf_gsm_map_om_MME_InterfaceList_s6a, -1, -1, "s6a", NULL },
  {  3, &hf_gsm_map_om_MME_InterfaceList_s10, -1, -1, "s10", NULL },
  {  4, &hf_gsm_map_om_MME_InterfaceList_s11, -1, -1, "s11", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_MME_InterfaceList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_MME_InterfaceList_bits, hf_index, ett_gsm_map_om_MME_InterfaceList,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_om_SGW_InterfaceList_bits[] = {
  {  0, &hf_gsm_map_om_SGW_InterfaceList_s4, -1, -1, "s4", NULL },
  {  1, &hf_gsm_map_om_SGW_InterfaceList_s5, -1, -1, "s5", NULL },
  {  2, &hf_gsm_map_om_SGW_InterfaceList_s8b, -1, -1, "s8b", NULL },
  {  3, &hf_gsm_map_om_SGW_InterfaceList_s11, -1, -1, "s11", NULL },
  {  4, &hf_gsm_map_om_SGW_InterfaceList_gxc, -1, -1, "gxc", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_SGW_InterfaceList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_SGW_InterfaceList_bits, hf_index, ett_gsm_map_om_SGW_InterfaceList,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_om_PGW_InterfaceList_bits[] = {
  {  0, &hf_gsm_map_om_PGW_InterfaceList_s2a, -1, -1, "s2a", NULL },
  {  1, &hf_gsm_map_om_PGW_InterfaceList_s2b, -1, -1, "s2b", NULL },
  {  2, &hf_gsm_map_om_PGW_InterfaceList_s2c, -1, -1, "s2c", NULL },
  {  3, &hf_gsm_map_om_PGW_InterfaceList_s5, -1, -1, "s5", NULL },
  {  4, &hf_gsm_map_om_PGW_InterfaceList_s6b, -1, -1, "s6b", NULL },
  {  5, &hf_gsm_map_om_PGW_InterfaceList_gx, -1, -1, "gx", NULL },
  {  6, &hf_gsm_map_om_PGW_InterfaceList_s8b, -1, -1, "s8b", NULL },
  {  7, &hf_gsm_map_om_PGW_InterfaceList_sgi, -1, -1, "sgi", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_PGW_InterfaceList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_PGW_InterfaceList_bits, hf_index, ett_gsm_map_om_PGW_InterfaceList,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_om_ENB_InterfaceList_bits[] = {
  {  0, &hf_gsm_map_om_ENB_InterfaceList_s1_mme, -1, -1, "s1-mme", NULL },
  {  1, &hf_gsm_map_om_ENB_InterfaceList_x2, -1, -1, "x2", NULL },
  {  2, &hf_gsm_map_om_ENB_InterfaceList_uu, -1, -1, "uu", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_ENB_InterfaceList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_ENB_InterfaceList_bits, hf_index, ett_gsm_map_om_ENB_InterfaceList,
                                    NULL);

  return offset;
}


static const ber_sequence_t gsm_map_om_TraceInterfaceList_sequence[] = {
  { &hf_gsm_map_om_msc_s_List, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MSC_S_InterfaceList },
  { &hf_gsm_map_om_mgw_List , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MGW_InterfaceList },
  { &hf_gsm_map_om_sgsn_List, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_SGSN_InterfaceList },
  { &hf_gsm_map_om_ggsn_List, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_GGSN_InterfaceList },
  { &hf_gsm_map_om_rnc_List , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_RNC_InterfaceList },
  { &hf_gsm_map_om_bmsc_List, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_BMSC_InterfaceList },
  { &hf_gsm_map_om_mme_List , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MME_InterfaceList },
  { &hf_gsm_map_om_sgw_List , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_SGW_InterfaceList },
  { &hf_gsm_map_om_pgw_List , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_PGW_InterfaceList },
  { &hf_gsm_map_om_eNB_List , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_ENB_InterfaceList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_om_TraceInterfaceList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_om_TraceInterfaceList_sequence, hf_index, ett_gsm_map_om_TraceInterfaceList);

  return offset;
}


static const asn_namedbit gsm_map_om_MSC_S_EventList_bits[] = {
  {  0, &hf_gsm_map_om_MSC_S_EventList_mo_mtCall, -1, -1, "mo-mtCall", NULL },
  {  1, &hf_gsm_map_om_MSC_S_EventList_mo_mt_sms, -1, -1, "mo-mt-sms", NULL },
  {  2, &hf_gsm_map_om_MSC_S_EventList_lu_imsiAttach_imsiDetach, -1, -1, "lu-imsiAttach-imsiDetach", NULL },
  {  3, &hf_gsm_map_om_MSC_S_EventList_handovers, -1, -1, "handovers", NULL },
  {  4, &hf_gsm_map_om_MSC_S_EventList_ss, -1, -1, "ss", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_MSC_S_EventList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_MSC_S_EventList_bits, hf_index, ett_gsm_map_om_MSC_S_EventList,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_om_MGW_EventList_bits[] = {
  {  0, &hf_gsm_map_om_MGW_EventList_context, -1, -1, "context", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_MGW_EventList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_MGW_EventList_bits, hf_index, ett_gsm_map_om_MGW_EventList,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_om_SGSN_EventList_bits[] = {
  {  0, &hf_gsm_map_om_SGSN_EventList_pdpContext, -1, -1, "pdpContext", NULL },
  {  1, &hf_gsm_map_om_SGSN_EventList_mo_mt_sms, -1, -1, "mo-mt-sms", NULL },
  {  2, &hf_gsm_map_om_SGSN_EventList_rau_gprsAttach_gprsDetach, -1, -1, "rau-gprsAttach-gprsDetach", NULL },
  {  3, &hf_gsm_map_om_SGSN_EventList_mbmsContext, -1, -1, "mbmsContext", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_SGSN_EventList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_SGSN_EventList_bits, hf_index, ett_gsm_map_om_SGSN_EventList,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_om_GGSN_EventList_bits[] = {
  {  0, &hf_gsm_map_om_GGSN_EventList_pdpContext, -1, -1, "pdpContext", NULL },
  {  1, &hf_gsm_map_om_GGSN_EventList_mbmsContext, -1, -1, "mbmsContext", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_GGSN_EventList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_GGSN_EventList_bits, hf_index, ett_gsm_map_om_GGSN_EventList,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_om_BMSC_EventList_bits[] = {
  {  0, &hf_gsm_map_om_BMSC_EventList_mbmsMulticastServiceActivation, -1, -1, "mbmsMulticastServiceActivation", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_BMSC_EventList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_BMSC_EventList_bits, hf_index, ett_gsm_map_om_BMSC_EventList,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_om_MME_EventList_bits[] = {
  {  0, &hf_gsm_map_om_MME_EventList_ue_initiatedPDNconectivityRequest, -1, -1, "ue-initiatedPDNconectivityRequest", NULL },
  {  1, &hf_gsm_map_om_MME_EventList_serviceRequestts, -1, -1, "serviceRequestts", NULL },
  {  2, &hf_gsm_map_om_MME_EventList_initialAttachTrackingAreaUpdateDetach, -1, -1, "initialAttachTrackingAreaUpdateDetach", NULL },
  {  3, &hf_gsm_map_om_MME_EventList_ue_initiatedPDNdisconnection, -1, -1, "ue-initiatedPDNdisconnection", NULL },
  {  4, &hf_gsm_map_om_MME_EventList_bearerActivationModificationDeletion, -1, -1, "bearerActivationModificationDeletion", NULL },
  {  5, &hf_gsm_map_om_MME_EventList_handover, -1, -1, "handover", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_MME_EventList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_MME_EventList_bits, hf_index, ett_gsm_map_om_MME_EventList,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_om_SGW_EventList_bits[] = {
  {  0, &hf_gsm_map_om_SGW_EventList_pdn_connectionCreation, -1, -1, "pdn-connectionCreation", NULL },
  {  1, &hf_gsm_map_om_SGW_EventList_pdn_connectionTermination, -1, -1, "pdn-connectionTermination", NULL },
  {  2, &hf_gsm_map_om_SGW_EventList_bearerActivationModificationDeletion, -1, -1, "bearerActivationModificationDeletion", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_SGW_EventList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_SGW_EventList_bits, hf_index, ett_gsm_map_om_SGW_EventList,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_om_PGW_EventList_bits[] = {
  {  0, &hf_gsm_map_om_PGW_EventList_pdn_connectionCreation, -1, -1, "pdn-connectionCreation", NULL },
  {  1, &hf_gsm_map_om_PGW_EventList_pdn_connectionTermination, -1, -1, "pdn-connectionTermination", NULL },
  {  2, &hf_gsm_map_om_PGW_EventList_bearerActivationModificationDeletion, -1, -1, "bearerActivationModificationDeletion", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_om_PGW_EventList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_om_PGW_EventList_bits, hf_index, ett_gsm_map_om_PGW_EventList,
                                    NULL);

  return offset;
}


static const ber_sequence_t gsm_map_om_TraceEventList_sequence[] = {
  { &hf_gsm_map_om_msc_s_List_01, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MSC_S_EventList },
  { &hf_gsm_map_om_mgw_List_01, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MGW_EventList },
  { &hf_gsm_map_om_sgsn_List_01, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_SGSN_EventList },
  { &hf_gsm_map_om_ggsn_List_01, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_GGSN_EventList },
  { &hf_gsm_map_om_bmsc_List_01, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_BMSC_EventList },
  { &hf_gsm_map_om_mme_List_01, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MME_EventList },
  { &hf_gsm_map_om_sgw_List_01, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_SGW_EventList },
  { &hf_gsm_map_om_pgw_List_01, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_PGW_EventList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_om_TraceEventList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_om_TraceEventList_sequence, hf_index, ett_gsm_map_om_TraceEventList);

  return offset;
}


static const ber_sequence_t gsm_map_om_ActivateTraceModeArg_sequence[] = {
  { &hf_gsm_map_om_imsi     , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_om_traceReference, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceReference },
  { &hf_gsm_map_om_traceType, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceType },
  { &hf_gsm_map_om_omc_Id   , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
  { &hf_gsm_map_om_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_om_traceReference2, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceReference2 },
  { &hf_gsm_map_om_traceDepthList, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepthList },
  { &hf_gsm_map_om_traceNE_TypeList, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceNE_TypeList },
  { &hf_gsm_map_om_traceInterfaceList, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceInterfaceList },
  { &hf_gsm_map_om_traceEventList, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceEventList },
  { &hf_gsm_map_om_traceCollectionEntity, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_om_ActivateTraceModeArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_om_ActivateTraceModeArg_sequence, hf_index, ett_gsm_map_om_ActivateTraceModeArg);

  return offset;
}



static int
dissect_gsm_map_om_TraceRecordingSessionReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_om_TracePropagationList_sequence[] = {
  { &hf_gsm_map_om_traceReference, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceReference },
  { &hf_gsm_map_om_traceType, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceType },
  { &hf_gsm_map_om_traceReference2, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceReference2 },
  { &hf_gsm_map_om_traceRecordingSessionReference, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceRecordingSessionReference },
  { &hf_gsm_map_om_rnc_TraceDepth, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth },
  { &hf_gsm_map_om_rnc_InterfaceList, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_RNC_InterfaceList },
  { &hf_gsm_map_om_msc_s_TraceDepth, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth },
  { &hf_gsm_map_om_msc_s_InterfaceList, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MSC_S_InterfaceList },
  { &hf_gsm_map_om_msc_s_EventList, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MSC_S_EventList },
  { &hf_gsm_map_om_mgw_TraceDepth, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceDepth },
  { &hf_gsm_map_om_mgw_InterfaceList, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MGW_InterfaceList },
  { &hf_gsm_map_om_mgw_EventList, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_MGW_EventList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_om_TracePropagationList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_om_TracePropagationList_sequence, hf_index, ett_gsm_map_om_TracePropagationList);

  return offset;
}



static int
dissect_gsm_map_om_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);

  return offset;
}


static const ber_sequence_t gsm_map_om_ActivateTraceModeRes_sequence[] = {
  { &hf_gsm_map_om_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_om_traceSupportIndicator, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_om_ActivateTraceModeRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_om_ActivateTraceModeRes_sequence, hf_index, ett_gsm_map_om_ActivateTraceModeRes);

  return offset;
}


static const ber_sequence_t gsm_map_om_DeactivateTraceModeArg_sequence[] = {
  { &hf_gsm_map_om_imsi     , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_om_traceReference, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceReference },
  { &hf_gsm_map_om_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_om_traceReference2, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TraceReference2 },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_om_DeactivateTraceModeArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_om_DeactivateTraceModeArg_sequence, hf_index, ett_gsm_map_om_DeactivateTraceModeArg);

  return offset;
}


static const ber_sequence_t gsm_map_om_DeactivateTraceModeRes_sequence[] = {
  { &hf_gsm_map_om_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_om_DeactivateTraceModeRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_om_DeactivateTraceModeRes_sequence, hf_index, ett_gsm_map_om_DeactivateTraceModeRes);

  return offset;
}


/* --- Module MAP-MS-DataTypes --- --- ---                                    */


static const asn_namedbit gsm_map_ms_SupportedCamelPhases_bits[] = {
  {  0, &hf_gsm_map_ms_SupportedCamelPhases_phase1, -1, -1, "phase1", NULL },
  {  1, &hf_gsm_map_ms_SupportedCamelPhases_phase2, -1, -1, "phase2", NULL },
  {  2, &hf_gsm_map_ms_SupportedCamelPhases_phase3, -1, -1, "phase3", NULL },
  {  3, &hf_gsm_map_ms_SupportedCamelPhases_phase4, -1, -1, "phase4", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

int
dissect_gsm_map_ms_SupportedCamelPhases(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_ms_SupportedCamelPhases_bits, hf_index, ett_gsm_map_ms_SupportedCamelPhases,
                                    NULL);

  return offset;
}



static int
dissect_gsm_map_ms_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);

  return offset;
}


static const value_string gsm_map_ms_IST_SupportIndicator_vals[] = {
  {   0, "basicISTSupported" },
  {   1, "istCommandSupported" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_IST_SupportIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}



static int
dissect_gsm_map_ms_AgeIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const value_string gsm_map_ms_SuperChargerInfo_vals[] = {
  {   0, "sendSubscriberData" },
  {   1, "subscriberDataStored" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_ms_SuperChargerInfo_choice[] = {
  {   0, &hf_gsm_map_ms_sendSubscriberData, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  {   1, &hf_gsm_map_ms_subscriberDataStored, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AgeIndicator },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SuperChargerInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_ms_SuperChargerInfo_choice, hf_index, ett_gsm_map_ms_SuperChargerInfo,
                                 NULL);

  return offset;
}


static const asn_namedbit gsm_map_ms_SupportedLCS_CapabilitySets_bits[] = {
  {  0, &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet1, -1, -1, "lcsCapabilitySet1", NULL },
  {  1, &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet2, -1, -1, "lcsCapabilitySet2", NULL },
  {  2, &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet3, -1, -1, "lcsCapabilitySet3", NULL },
  {  3, &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet4, -1, -1, "lcsCapabilitySet4", NULL },
  {  4, &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet5, -1, -1, "lcsCapabilitySet5", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_ms_SupportedLCS_CapabilitySets(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_ms_SupportedLCS_CapabilitySets_bits, hf_index, ett_gsm_map_ms_SupportedLCS_CapabilitySets,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_ms_OfferedCamel4CSIs_bits[] = {
  {  0, &hf_gsm_map_ms_OfferedCamel4CSIs_o_csi, -1, -1, "o-csi", NULL },
  {  1, &hf_gsm_map_ms_OfferedCamel4CSIs_d_csi, -1, -1, "d-csi", NULL },
  {  2, &hf_gsm_map_ms_OfferedCamel4CSIs_vt_csi, -1, -1, "vt-csi", NULL },
  {  3, &hf_gsm_map_ms_OfferedCamel4CSIs_t_csi, -1, -1, "t-csi", NULL },
  {  4, &hf_gsm_map_ms_OfferedCamel4CSIs_mt_sms_csi, -1, -1, "mt-sms-csi", NULL },
  {  5, &hf_gsm_map_ms_OfferedCamel4CSIs_mg_csi, -1, -1, "mg-csi", NULL },
  {  6, &hf_gsm_map_ms_OfferedCamel4CSIs_psi_enhancements, -1, -1, "psi-enhancements", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_ms_OfferedCamel4CSIs(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_ms_OfferedCamel4CSIs_bits, hf_index, ett_gsm_map_ms_OfferedCamel4CSIs,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_ms_SupportedRAT_Types_bits[] = {
  {  0, &hf_gsm_map_ms_SupportedRAT_Types_utran, -1, -1, "utran", NULL },
  {  1, &hf_gsm_map_ms_SupportedRAT_Types_geran, -1, -1, "geran", NULL },
  {  2, &hf_gsm_map_ms_SupportedRAT_Types_gan, -1, -1, "gan", NULL },
  {  3, &hf_gsm_map_ms_SupportedRAT_Types_i_hspa_evolution, -1, -1, "i-hspa-evolution", NULL },
  {  4, &hf_gsm_map_ms_SupportedRAT_Types_e_utran, -1, -1, "e-utran", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_ms_SupportedRAT_Types(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_ms_SupportedRAT_Types_bits, hf_index, ett_gsm_map_ms_SupportedRAT_Types,
                                    NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_VLR_Capability_sequence[] = {
  { &hf_gsm_map_ms_supportedCamelPhases, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCamelPhases },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_solsaSupportIndicator, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_istSupportIndicator, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_IST_SupportIndicator },
  { &hf_gsm_map_ms_superChargerSupportedInServingNetworkEntity, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_SuperChargerInfo },
  { &hf_gsm_map_ms_longFTN_Supported, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_supportedLCS_CapabilitySets, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedLCS_CapabilitySets },
  { &hf_gsm_map_ms_offeredCamel4CSIs, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OfferedCamel4CSIs },
  { &hf_gsm_map_ms_supportedRAT_TypesIndicator, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedRAT_Types },
  { &hf_gsm_map_ms_longGroupID_Supported, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_VLR_Capability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_VLR_Capability_sequence, hf_index, ett_gsm_map_ms_VLR_Capability);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ADD_Info_sequence[] = {
  { &hf_gsm_map_ms_imeisv   , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
  { &hf_gsm_map_ms_skipSubscriberDataUpdate, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_ADD_Info(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_ADD_Info_sequence, hf_index, ett_gsm_map_ms_ADD_Info);

  return offset;
}



static int
dissect_gsm_map_ms_LAC(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const value_string gsm_map_ms_LocationArea_vals[] = {
  {   0, "laiFixedLength" },
  {   1, "lac" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_ms_LocationArea_choice[] = {
  {   0, &hf_gsm_map_ms_laiFixedLength, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_LAIFixedLength },
  {   1, &hf_gsm_map_ms_lac      , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LAC },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_LocationArea(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_ms_LocationArea_choice, hf_index, ett_gsm_map_ms_LocationArea,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_PagingArea_sequence_of[1] = {
  { &hf_gsm_map_ms_PagingArea_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_LocationArea },
};

static int
dissect_gsm_map_ms_PagingArea(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_PagingArea_sequence_of, hf_index, ett_gsm_map_ms_PagingArea);

  return offset;
}


static const ber_sequence_t gsm_map_ms_UpdateLocationArg_sequence[] = {
  { &hf_gsm_map_ms_imsi     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ms_msc_Number, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_vlr_Number, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_lmsi     , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_vlr_Capability, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_VLR_Capability },
  { &hf_gsm_map_ms_informPreviousNetworkEntity, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_cs_LCS_NotSupportedByUE, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_v_gmlc_Address, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_map_ms_add_info , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ADD_Info },
  { &hf_gsm_map_ms_pagingArea, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PagingArea },
  { &hf_gsm_map_ms_skipSubscriberDataUpdate, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_restorationIndicator, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_UpdateLocationArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_UpdateLocationArg_sequence, hf_index, ett_gsm_map_ms_UpdateLocationArg);

  return offset;
}


static const ber_sequence_t gsm_map_ms_UpdateLocationRes_sequence[] = {
  { &hf_gsm_map_ms_hlr_Number, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_add_Capability, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_pagingArea_Capability, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_UpdateLocationRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_UpdateLocationRes_sequence, hf_index, ett_gsm_map_ms_UpdateLocationRes);

  return offset;
}


static const value_string gsm_map_ms_CancellationType_vals[] = {
  {   0, "updateProcedure" },
  {   1, "subscriptionWithdraw" },
  {   2, "initialAttachProcedure" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_CancellationType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const value_string gsm_map_ms_TypeOfUpdate_vals[] = {
  {   0, "sgsn-change" },
  {   1, "mme-change" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_TypeOfUpdate(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_CancelLocationArg_U_sequence[] = {
  { &hf_gsm_map_ms_identity , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Identity },
  { &hf_gsm_map_ms_cancellationType, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CancellationType },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_typeOfUpdate, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TypeOfUpdate },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_CancelLocationArg_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_CancelLocationArg_U_sequence, hf_index, ett_gsm_map_ms_CancelLocationArg_U);

  return offset;
}



static int
dissect_gsm_map_ms_CancelLocationArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
                                      hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_CancelLocationArg_U);

  return offset;
}


static const ber_sequence_t gsm_map_ms_CancelLocationRes_sequence[] = {
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_CancelLocationRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_CancelLocationRes_sequence, hf_index, ett_gsm_map_ms_CancelLocationRes);

  return offset;
}


static const ber_sequence_t gsm_map_ms_PurgeMS_Arg_U_sequence[] = {
  { &hf_gsm_map_ms_imsi     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ms_vlr_Number, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_sgsn_Number, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_PurgeMS_Arg_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_PurgeMS_Arg_U_sequence, hf_index, ett_gsm_map_ms_PurgeMS_Arg_U);

  return offset;
}



static int
dissect_gsm_map_ms_PurgeMS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
                                      hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_PurgeMS_Arg_U);

  return offset;
}


static const ber_sequence_t gsm_map_ms_PurgeMS_Res_sequence[] = {
  { &hf_gsm_map_ms_freezeTMSI, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_freezeP_TMSI, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_freezeM_TMSI, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_PurgeMS_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_PurgeMS_Res_sequence, hf_index, ett_gsm_map_ms_PurgeMS_Res);

  return offset;
}



static int
dissect_gsm_map_ms_NumberOfRequestedVectors(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_map_ms_HopCounter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SendIdentificationArg_sequence[] = {
  { &hf_gsm_map_ms_tmsi     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_TMSI },
  { &hf_gsm_map_ms_numberOfRequestedVectors, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NumberOfRequestedVectors },
  { &hf_gsm_map_ms_segmentationProhibited, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_msc_Number, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_previous_LAI, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LAIFixedLength },
  { &hf_gsm_map_ms_hopCounter, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_HopCounter },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SendIdentificationArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SendIdentificationArg_sequence, hf_index, ett_gsm_map_ms_SendIdentificationArg);

  return offset;
}



static int
dissect_gsm_map_ms_RAND(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_SRES(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_Kc(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_AuthenticationTriplet_sequence[] = {
  { &hf_gsm_map_ms_rand     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RAND },
  { &hf_gsm_map_ms_sres     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_SRES },
  { &hf_gsm_map_ms_kc       , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Kc },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_AuthenticationTriplet(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_AuthenticationTriplet_sequence, hf_index, ett_gsm_map_ms_AuthenticationTriplet);

  return offset;
}


static const ber_sequence_t gsm_map_ms_TripletList_sequence_of[1] = {
  { &hf_gsm_map_ms_TripletList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_AuthenticationTriplet },
};

static int
dissect_gsm_map_ms_TripletList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_TripletList_sequence_of, hf_index, ett_gsm_map_ms_TripletList);

  return offset;
}



static int
dissect_gsm_map_ms_XRES(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_CK(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_IK(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_AUTN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_AuthenticationQuintuplet_sequence[] = {
  { &hf_gsm_map_ms_rand     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RAND },
  { &hf_gsm_map_ms_xres     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_XRES },
  { &hf_gsm_map_ms_ck       , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CK },
  { &hf_gsm_map_ms_ik       , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_IK },
  { &hf_gsm_map_ms_autn     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_AUTN },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_AuthenticationQuintuplet(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_AuthenticationQuintuplet_sequence, hf_index, ett_gsm_map_ms_AuthenticationQuintuplet);

  return offset;
}


static const ber_sequence_t gsm_map_ms_QuintupletList_sequence_of[1] = {
  { &hf_gsm_map_ms_QuintupletList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_AuthenticationQuintuplet },
};

static int
dissect_gsm_map_ms_QuintupletList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_QuintupletList_sequence_of, hf_index, ett_gsm_map_ms_QuintupletList);

  return offset;
}


static const value_string gsm_map_ms_AuthenticationSetList_vals[] = {
  {   0, "tripletList" },
  {   1, "quintupletList" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_ms_AuthenticationSetList_choice[] = {
  {   0, &hf_gsm_map_ms_tripletList, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TripletList },
  {   1, &hf_gsm_map_ms_quintupletList, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_QuintupletList },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_AuthenticationSetList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_ms_AuthenticationSetList_choice, hf_index, ett_gsm_map_ms_AuthenticationSetList,
                                 NULL);

  return offset;
}



static int
dissect_gsm_map_ms_Cksn(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_GSM_SecurityContextData_sequence[] = {
  { &hf_gsm_map_ms_kc       , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Kc },
  { &hf_gsm_map_ms_cksn     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Cksn },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_GSM_SecurityContextData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_GSM_SecurityContextData_sequence, hf_index, ett_gsm_map_ms_GSM_SecurityContextData);

  return offset;
}



static int
dissect_gsm_map_ms_KSI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_UMTS_SecurityContextData_sequence[] = {
  { &hf_gsm_map_ms_ck       , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CK },
  { &hf_gsm_map_ms_ik       , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_IK },
  { &hf_gsm_map_ms_ksi      , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_KSI },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_UMTS_SecurityContextData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_UMTS_SecurityContextData_sequence, hf_index, ett_gsm_map_ms_UMTS_SecurityContextData);

  return offset;
}


static const value_string gsm_map_ms_CurrentSecurityContext_vals[] = {
  {   0, "gsm-SecurityContextData" },
  {   1, "umts-SecurityContextData" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_ms_CurrentSecurityContext_choice[] = {
  {   0, &hf_gsm_map_ms_gsm_SecurityContextData, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GSM_SecurityContextData },
  {   1, &hf_gsm_map_ms_umts_SecurityContextData, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UMTS_SecurityContextData },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_CurrentSecurityContext(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_ms_CurrentSecurityContext_choice, hf_index, ett_gsm_map_ms_CurrentSecurityContext,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SendIdentificationRes_U_sequence[] = {
  { &hf_gsm_map_ms_imsi     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ms_authenticationSetList, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_AuthenticationSetList },
  { &hf_gsm_map_ms_currentSecurityContext, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_CurrentSecurityContext },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SendIdentificationRes_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SendIdentificationRes_U_sequence, hf_index, ett_gsm_map_ms_SendIdentificationRes_U);

  return offset;
}



static int
dissect_gsm_map_ms_SendIdentificationRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
                                      hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_SendIdentificationRes_U);

  return offset;
}



static int
dissect_gsm_map_ms_AUTS(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const value_string gsm_map_ms_FailureCause_vals[] = {
  {   0, "wrongUserResponse" },
  {   1, "wrongNetworkSignature" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_FailureCause(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}



static int
dissect_gsm_map_ms_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);

  return offset;
}


static const value_string gsm_map_ms_AccessType_vals[] = {
  {   0, "call" },
  {   1, "emergencyCall" },
  {   2, "locationUpdating" },
  {   3, "supplementaryService" },
  {   4, "shortMessage" },
  {   5, "gprsAttach" },
  {   6, "routingAreaUpdating" },
  {   7, "serviceRequest" },
  {   8, "pdpContextActivation" },
  {   9, "pdpContextDeactivation" },
  {  10, "gprsDetach" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_AccessType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_AuthenticationFailureReportArg_sequence[] = {
  { &hf_gsm_map_ms_imsi     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ms_failureCause, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_FailureCause },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_re_attempt, BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_BOOLEAN },
  { &hf_gsm_map_ms_accessType, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_AccessType },
  { &hf_gsm_map_ms_rand     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RAND },
  { &hf_gsm_map_ms_vlr_Number, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_sgsn_Number, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_AuthenticationFailureReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_AuthenticationFailureReportArg_sequence, hf_index, ett_gsm_map_ms_AuthenticationFailureReportArg);

  return offset;
}


static const ber_sequence_t gsm_map_ms_AuthenticationFailureReportRes_sequence[] = {
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_AuthenticationFailureReportRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_AuthenticationFailureReportRes_sequence, hf_index, ett_gsm_map_ms_AuthenticationFailureReportRes);

  return offset;
}


static const asn_namedbit gsm_map_ms_SupportedFeatures_bits[] = {
  {  0, &hf_gsm_map_ms_SupportedFeatures_odb_all_apn, -1, -1, "odb-all-apn", NULL },
  {  1, &hf_gsm_map_ms_SupportedFeatures_odb_HPLMN_APN, -1, -1, "odb-HPLMN-APN", NULL },
  {  2, &hf_gsm_map_ms_SupportedFeatures_odb_VPLMN_APN, -1, -1, "odb-VPLMN-APN", NULL },
  {  3, &hf_gsm_map_ms_SupportedFeatures_odb_all_og, -1, -1, "odb-all-og", NULL },
  {  4, &hf_gsm_map_ms_SupportedFeatures_odb_all_international_og, -1, -1, "odb-all-international-og", NULL },
  {  5, &hf_gsm_map_ms_SupportedFeatures_odb_all_int_og_not_to_HPLMN_country, -1, -1, "odb-all-int-og-not-to-HPLMN-country", NULL },
  {  6, &hf_gsm_map_ms_SupportedFeatures_odb_all_interzonal_og, -1, -1, "odb-all-interzonal-og", NULL },
  {  7, &hf_gsm_map_ms_SupportedFeatures_odb_all_interzonal_og_not_to_HPLMN_country, -1, -1, "odb-all-interzonal-og-not-to-HPLMN-country", NULL },
  {  8, &hf_gsm_map_ms_SupportedFeatures_odb_all_interzonal_og_and_internat_og_not_to_HPLMN_country, -1, -1, "odb-all-interzonal-og-and-internat-og-not-to-HPLMN-country", NULL },
  {  9, &hf_gsm_map_ms_SupportedFeatures_regSub, -1, -1, "regSub", NULL },
  { 10, &hf_gsm_map_ms_SupportedFeatures_trace, -1, -1, "trace", NULL },
  { 11, &hf_gsm_map_ms_SupportedFeatures_lcs_all_PrivExcep, -1, -1, "lcs-all-PrivExcep", NULL },
  { 12, &hf_gsm_map_ms_SupportedFeatures_lcs_universal, -1, -1, "lcs-universal", NULL },
  { 13, &hf_gsm_map_ms_SupportedFeatures_lcs_CallSessionRelated, -1, -1, "lcs-CallSessionRelated", NULL },
  { 14, &hf_gsm_map_ms_SupportedFeatures_lcs_CallSessionUnrelated, -1, -1, "lcs-CallSessionUnrelated", NULL },
  { 15, &hf_gsm_map_ms_SupportedFeatures_lcs_PLMN_operator, -1, -1, "lcs-PLMN-operator", NULL },
  { 16, &hf_gsm_map_ms_SupportedFeatures_lcs_ServiceType, -1, -1, "lcs-ServiceType", NULL },
  { 17, &hf_gsm_map_ms_SupportedFeatures_lcs_all_MOLR_SS, -1, -1, "lcs-all-MOLR-SS", NULL },
  { 18, &hf_gsm_map_ms_SupportedFeatures_lcs_basicSelfLocation, -1, -1, "lcs-basicSelfLocation", NULL },
  { 19, &hf_gsm_map_ms_SupportedFeatures_lcs_autonomousSelfLocation, -1, -1, "lcs-autonomousSelfLocation", NULL },
  { 20, &hf_gsm_map_ms_SupportedFeatures_lcs_transferToThirdParty, -1, -1, "lcs-transferToThirdParty", NULL },
  { 21, &hf_gsm_map_ms_SupportedFeatures_sm_mo_pp, -1, -1, "sm-mo-pp", NULL },
  { 22, &hf_gsm_map_ms_SupportedFeatures_barring_OutgoingCalls, -1, -1, "barring-OutgoingCalls", NULL },
  { 23, &hf_gsm_map_ms_SupportedFeatures_baoc, -1, -1, "baoc", NULL },
  { 24, &hf_gsm_map_ms_SupportedFeatures_boic, -1, -1, "boic", NULL },
  { 25, &hf_gsm_map_ms_SupportedFeatures_boicExHC, -1, -1, "boicExHC", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_ms_SupportedFeatures(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_ms_SupportedFeatures_bits, hf_index, ett_gsm_map_ms_SupportedFeatures,
                                    NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SGSN_Capability_sequence[] = {
  { &hf_gsm_map_ms_solsaSupportIndicator, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_superChargerSupportedInServingNetworkEntity, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_SuperChargerInfo },
  { &hf_gsm_map_ms_gprsEnhancementsSupportIndicator, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_supportedCamelPhases, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCamelPhases },
  { &hf_gsm_map_ms_supportedLCS_CapabilitySets, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedLCS_CapabilitySets },
  { &hf_gsm_map_ms_offeredCamel4CSIs, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OfferedCamel4CSIs },
  { &hf_gsm_map_ms_smsCallBarringSupportIndicator, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_supportedRAT_TypesIndicator, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedRAT_Types },
  { &hf_gsm_map_ms_supportedFeatures, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedFeatures },
  { &hf_gsm_map_ms_t_adsDataRetrieval, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_homogeneousSupportOfIMSVoiceOverPSSessions, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BOOLEAN },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SGSN_Capability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SGSN_Capability_sequence, hf_index, ett_gsm_map_ms_SGSN_Capability);

  return offset;
}



static int
dissect_gsm_map_ms_APN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_PDP_Address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_FQDN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_PDN_GW_Identity_sequence[] = {
  { &hf_gsm_map_ms_pdn_gw_ipv4_Address, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Address },
  { &hf_gsm_map_ms_pdn_gw_ipv6_Address, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Address },
  { &hf_gsm_map_ms_pdn_gw_name, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_FQDN },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_PDN_GW_Identity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_PDN_GW_Identity_sequence, hf_index, ett_gsm_map_ms_PDN_GW_Identity);

  return offset;
}



static int
dissect_gsm_map_ms_ContextId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_PDN_GW_Update_sequence[] = {
  { &hf_gsm_map_ms_apn      , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN },
  { &hf_gsm_map_ms_pdn_gw_Identity, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDN_GW_Identity },
  { &hf_gsm_map_ms_contextId, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ContextId },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_PDN_GW_Update(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_PDN_GW_Update_sequence, hf_index, ett_gsm_map_ms_PDN_GW_Update);

  return offset;
}


static const asn_namedbit gsm_map_ms_ISR_Information_bits[] = {
  {  0, &hf_gsm_map_ms_ISR_Information_updateMME, -1, -1, "updateMME", NULL },
  {  1, &hf_gsm_map_ms_ISR_Information_cancelSGSN, -1, -1, "cancelSGSN", NULL },
  {  2, &hf_gsm_map_ms_ISR_Information_initialAttachIndicator, -1, -1, "initialAttachIndicator", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_ms_ISR_Information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_ms_ISR_Information_bits, hf_index, ett_gsm_map_ms_ISR_Information,
                                    NULL);

  return offset;
}


static const value_string gsm_map_ms_EPS_Info_vals[] = {
  {   0, "pdn-gw-update" },
  {   1, "isr-Information" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_ms_EPS_Info_choice[] = {
  {   0, &hf_gsm_map_ms_pdn_gw_update, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDN_GW_Update },
  {   1, &hf_gsm_map_ms_isr_Information, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ISR_Information },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_EPS_Info(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_ms_EPS_Info_choice, hf_index, ett_gsm_map_ms_EPS_Info,
                                 NULL);

  return offset;
}


static const value_string gsm_map_ms_Used_RAT_Type_vals[] = {
  {   0, "utran" },
  {   1, "geran" },
  {   2, "gan" },
  {   3, "i-hspa-evolution" },
  {   4, "e-utran" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_Used_RAT_Type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_UpdateGprsLocationArg_sequence[] = {
  { &hf_gsm_map_ms_imsi     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ms_sgsn_Number, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_sgsn_Address, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_sgsn_Capability, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SGSN_Capability },
  { &hf_gsm_map_ms_informPreviousNetworkEntity, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_ps_LCS_NotSupportedByUE, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_v_gmlc_Address, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_map_ms_add_info , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ADD_Info },
  { &hf_gsm_map_ms_eps_info , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_EPS_Info },
  { &hf_gsm_map_ms_servingNodeTypeIndicator, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_skipSubscriberDataUpdate, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_usedRAT_Type, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Used_RAT_Type },
  { &hf_gsm_map_ms_gprsSubscriptionDataNotNeeded, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_nodeTypeIndicator, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_areaRestricted, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_ue_reachableIndicator, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_epsSubscriptionDataNotNeeded, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_UpdateGprsLocationArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_UpdateGprsLocationArg_sequence, hf_index, ett_gsm_map_ms_UpdateGprsLocationArg);

  return offset;
}


static const ber_sequence_t gsm_map_ms_UpdateGprsLocationRes_sequence[] = {
  { &hf_gsm_map_ms_hlr_Number, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_add_Capability, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_sgsn_mmeSeparationSupported, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_UpdateGprsLocationRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_UpdateGprsLocationRes_sequence, hf_index, ett_gsm_map_ms_UpdateGprsLocationRes);

  return offset;
}



static int
dissect_gsm_map_ms_IntegrityProtectionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 613 "../../asn1/gsm_map/gsm_map.cnf"
    tvbuff_t        *parameter_tvb;
	asn1_ctx_t		asn1_ctx;

  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);


	if (!parameter_tvb)
                return offset;

	asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, actx->pinfo);
	dissect_ranap_IntegrityProtectionInformation(parameter_tvb, 0, &asn1_ctx, tree, hf_gsm_map_IntegrityProtectionInformation);



  return offset;
}



static int
dissect_gsm_map_ms_EncryptionInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 625 "../../asn1/gsm_map/gsm_map.cnf"
    tvbuff_t        *parameter_tvb;
	asn1_ctx_t		asn1_ctx;

  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);


	if (!parameter_tvb)
                return offset;

	asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, actx->pinfo);
	dissect_ranap_EncryptionInformation(parameter_tvb, 0, &asn1_ctx, tree, hf_gsm_map_EncryptionInformation);



  return offset;
}


static const value_string gsm_map_ms_KeyStatus_vals[] = {
  {   0, "old" },
  {   1, "new" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_KeyStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}



static int
dissect_gsm_map_ms_AllowedGSM_Algorithms(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_PermittedIntegrityProtectionAlgorithms(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_PermittedEncryptionAlgorithms(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_AllowedUMTS_Algorithms_sequence[] = {
  { &hf_gsm_map_ms_integrityProtectionAlgorithms, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PermittedIntegrityProtectionAlgorithms },
  { &hf_gsm_map_ms_encryptionAlgorithms, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PermittedEncryptionAlgorithms },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_AllowedUMTS_Algorithms(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_AllowedUMTS_Algorithms_sequence, hf_index, ett_gsm_map_ms_AllowedUMTS_Algorithms);

  return offset;
}



static int
dissect_gsm_map_ms_RadioResourceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 589 "../../asn1/gsm_map/gsm_map.cnf"
    tvbuff_t        *parameter_tvb;
	proto_tree *subtree;

  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);


	if (!parameter_tvb)
                return offset;

    subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_RadioResourceInformation);
	be_chan_type(parameter_tvb, subtree, actx->pinfo, 0, tvb_length_remaining(tvb,0), NULL, 0);



  return offset;
}



static int
dissect_gsm_map_ms_RAB_Id(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_RadioResource_sequence[] = {
  { &hf_gsm_map_ms_radioResourceInformation, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RadioResourceInformation },
  { &hf_gsm_map_ms_rab_Id   , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RAB_Id },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_RadioResource(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_RadioResource_sequence, hf_index, ett_gsm_map_ms_RadioResource);

  return offset;
}


static const ber_sequence_t gsm_map_ms_RadioResourceList_sequence_of[1] = {
  { &hf_gsm_map_ms_RadioResourceList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RadioResource },
};

static int
dissect_gsm_map_ms_RadioResourceList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_RadioResourceList_sequence_of, hf_index, ett_gsm_map_ms_RadioResourceList);

  return offset;
}



static int
dissect_gsm_map_ms_BSSMAP_ServiceHandover(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_RANAP_ServiceHandover(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 601 "../../asn1/gsm_map/gsm_map.cnf"
    tvbuff_t        *parameter_tvb;
	asn1_ctx_t		asn1_ctx;

  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);


	if (!parameter_tvb)
                return offset;

	asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, actx->pinfo);
	dissect_ranap_Service_Handover(parameter_tvb, 0, &asn1_ctx, tree, hf_gsm_map_ranap_service_Handover);



  return offset;
}


static const ber_sequence_t gsm_map_ms_BSSMAP_ServiceHandoverInfo_sequence[] = {
  { &hf_gsm_map_ms_bssmap_ServiceHandover, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_BSSMAP_ServiceHandover },
  { &hf_gsm_map_ms_rab_Id   , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RAB_Id },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_BSSMAP_ServiceHandoverInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_BSSMAP_ServiceHandoverInfo_sequence, hf_index, ett_gsm_map_ms_BSSMAP_ServiceHandoverInfo);

  return offset;
}


static const ber_sequence_t gsm_map_ms_BSSMAP_ServiceHandoverList_sequence_of[1] = {
  { &hf_gsm_map_ms_BSSMAP_ServiceHandoverList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_BSSMAP_ServiceHandoverInfo },
};

static int
dissect_gsm_map_ms_BSSMAP_ServiceHandoverList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_BSSMAP_ServiceHandoverList_sequence_of, hf_index, ett_gsm_map_ms_BSSMAP_ServiceHandoverList);

  return offset;
}



static int
dissect_gsm_map_ms_Codec(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_CodecList_sequence[] = {
  { &hf_gsm_map_ms_codec1_01, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec },
  { &hf_gsm_map_ms_codec2_01, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec },
  { &hf_gsm_map_ms_codec3_01, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec },
  { &hf_gsm_map_ms_codec4_01, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec },
  { &hf_gsm_map_ms_codec5_01, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec },
  { &hf_gsm_map_ms_codec6_01, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec },
  { &hf_gsm_map_ms_codec7_01, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec },
  { &hf_gsm_map_ms_codec8_01, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_CodecList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_CodecList_sequence, hf_index, ett_gsm_map_ms_CodecList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SupportedCodecsList_sequence[] = {
  { &hf_gsm_map_ms_utranCodecList, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CodecList },
  { &hf_gsm_map_ms_geranCodecList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CodecList },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SupportedCodecsList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SupportedCodecsList_sequence, hf_index, ett_gsm_map_ms_SupportedCodecsList);

  return offset;
}



static int
dissect_gsm_map_ms_AoIPCodec(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_AoIPCodecsList_sequence[] = {
  { &hf_gsm_map_ms_codec1   , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec },
  { &hf_gsm_map_ms_codec2   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec },
  { &hf_gsm_map_ms_codec3   , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec },
  { &hf_gsm_map_ms_codec4   , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec },
  { &hf_gsm_map_ms_codec5   , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec },
  { &hf_gsm_map_ms_codec6   , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec },
  { &hf_gsm_map_ms_codec7   , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec },
  { &hf_gsm_map_ms_codec8   , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_AoIPCodecsList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_AoIPCodecsList_sequence, hf_index, ett_gsm_map_ms_AoIPCodecsList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ForwardAccessSignalling_Arg_U_sequence[] = {
  { &hf_gsm_map_ms_an_APDU  , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_AccessNetworkSignalInfo },
  { &hf_gsm_map_ms_integrityProtectionInfo, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_IntegrityProtectionInformation },
  { &hf_gsm_map_ms_encryptionInfo, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EncryptionInformation },
  { &hf_gsm_map_ms_keyStatus, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_KeyStatus },
  { &hf_gsm_map_ms_allowedGSM_Algorithms, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AllowedGSM_Algorithms },
  { &hf_gsm_map_ms_allowedUMTS_Algorithms, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AllowedUMTS_Algorithms },
  { &hf_gsm_map_ms_radioResourceInformation, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RadioResourceInformation },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_radioResourceList, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RadioResourceList },
  { &hf_gsm_map_ms_bssmap_ServiceHandover, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BSSMAP_ServiceHandover },
  { &hf_gsm_map_ms_ranap_ServiceHandover, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RANAP_ServiceHandover },
  { &hf_gsm_map_ms_bssmap_ServiceHandoverList, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BSSMAP_ServiceHandoverList },
  { &hf_gsm_map_ms_currentlyUsedCodec, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec },
  { &hf_gsm_map_ms_iuSupportedCodecsList, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCodecsList },
  { &hf_gsm_map_ms_rab_ConfigurationIndicator, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_iuSelectedCodec, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec },
  { &hf_gsm_map_ms_alternativeChannelType, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RadioResourceInformation },
  { &hf_gsm_map_ms_tracePropagationList, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TracePropagationList },
  { &hf_gsm_map_ms_aoipSupportedCodecsListAnchor, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodecsList },
  { &hf_gsm_map_ms_aoipSelectedCodecTarget, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_ForwardAccessSignalling_Arg_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_ForwardAccessSignalling_Arg_U_sequence, hf_index, ett_gsm_map_ms_ForwardAccessSignalling_Arg_U);

  return offset;
}



static int
dissect_gsm_map_ms_ForwardAccessSignalling_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
                                      hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_ForwardAccessSignalling_Arg_U);

  return offset;
}



static int
dissect_gsm_map_ms_RNCId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_GERAN_Classmark(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_UESBI_IuA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    NULL, hf_index, -1,
                                    NULL);

  return offset;
}



static int
dissect_gsm_map_ms_UESBI_IuB(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    NULL, hf_index, -1,
                                    NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_UESBI_Iu_sequence[] = {
  { &hf_gsm_map_ms_uesbi_IuA, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UESBI_IuA },
  { &hf_gsm_map_ms_uesbi_IuB, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UESBI_IuB },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_UESBI_Iu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_UESBI_Iu_sequence, hf_index, ett_gsm_map_ms_UESBI_Iu);

  return offset;
}


static const ber_sequence_t gsm_map_ms_PrepareHO_Arg_U_sequence[] = {
  { &hf_gsm_map_ms_targetCellId, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GlobalCellId },
  { &hf_gsm_map_ms_ho_NumberNotRequired, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_targetRNCId, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RNCId },
  { &hf_gsm_map_ms_an_APDU  , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AccessNetworkSignalInfo },
  { &hf_gsm_map_ms_multipleBearerRequested, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_imsi     , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ms_integrityProtectionInfo, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_IntegrityProtectionInformation },
  { &hf_gsm_map_ms_encryptionInfo, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EncryptionInformation },
  { &hf_gsm_map_ms_radioResourceInformation, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RadioResourceInformation },
  { &hf_gsm_map_ms_allowedGSM_Algorithms, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AllowedGSM_Algorithms },
  { &hf_gsm_map_ms_allowedUMTS_Algorithms, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AllowedUMTS_Algorithms },
  { &hf_gsm_map_ms_radioResourceList, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RadioResourceList },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_rab_Id   , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RAB_Id },
  { &hf_gsm_map_ms_bssmap_ServiceHandover, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BSSMAP_ServiceHandover },
  { &hf_gsm_map_ms_ranap_ServiceHandover, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RANAP_ServiceHandover },
  { &hf_gsm_map_ms_bssmap_ServiceHandoverList, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BSSMAP_ServiceHandoverList },
  { &hf_gsm_map_ms_asciCallReference, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ASCI_CallReference },
  { &hf_gsm_map_ms_geran_classmark, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GERAN_Classmark },
  { &hf_gsm_map_ms_iuCurrentlyUsedCodec, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec },
  { &hf_gsm_map_ms_iuSupportedCodecsList, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCodecsList },
  { &hf_gsm_map_ms_rab_ConfigurationIndicator, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_uesbi_Iu , BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UESBI_Iu },
  { &hf_gsm_map_ms_imeisv   , BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
  { &hf_gsm_map_ms_alternativeChannelType, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RadioResourceInformation },
  { &hf_gsm_map_ms_tracePropagationList, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_om_TracePropagationList },
  { &hf_gsm_map_ms_aoipSupportedCodecsListAnchor, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodecsList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_PrepareHO_Arg_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_PrepareHO_Arg_U_sequence, hf_index, ett_gsm_map_ms_PrepareHO_Arg_U);

  return offset;
}



static int
dissect_gsm_map_ms_PrepareHO_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
                                      hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_PrepareHO_Arg_U);

  return offset;
}


static const ber_sequence_t gsm_map_ms_RelocationNumber_sequence[] = {
  { &hf_gsm_map_ms_handoverNumber, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_rab_Id   , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RAB_Id },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_RelocationNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_RelocationNumber_sequence, hf_index, ett_gsm_map_ms_RelocationNumber);

  return offset;
}


static const ber_sequence_t gsm_map_ms_RelocationNumberList_sequence_of[1] = {
  { &hf_gsm_map_ms_RelocationNumberList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RelocationNumber },
};

static int
dissect_gsm_map_ms_RelocationNumberList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_RelocationNumberList_sequence_of, hf_index, ett_gsm_map_ms_RelocationNumberList);

  return offset;
}



static int
dissect_gsm_map_ms_MulticallBearerInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_map_ms_ChosenIntegrityProtectionAlgorithm(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_ChosenEncryptionAlgorithm(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SelectedUMTS_Algorithms_sequence[] = {
  { &hf_gsm_map_ms_integrityProtectionAlgorithm, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChosenIntegrityProtectionAlgorithm },
  { &hf_gsm_map_ms_encryptionAlgorithm, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChosenEncryptionAlgorithm },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SelectedUMTS_Algorithms(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SelectedUMTS_Algorithms_sequence, hf_index, ett_gsm_map_ms_SelectedUMTS_Algorithms);

  return offset;
}



static int
dissect_gsm_map_ms_ChosenChannelInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_ChosenSpeechVersion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ChosenRadioResourceInformation_sequence[] = {
  { &hf_gsm_map_ms_chosenChannelInfo, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChosenChannelInfo },
  { &hf_gsm_map_ms_chosenSpeechVersion, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChosenSpeechVersion },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_ChosenRadioResourceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_ChosenRadioResourceInformation_sequence, hf_index, ett_gsm_map_ms_ChosenRadioResourceInformation);

  return offset;
}


static const ber_sequence_t gsm_map_ms_PrepareHO_Res_U_sequence[] = {
  { &hf_gsm_map_ms_handoverNumber, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_relocationNumberList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RelocationNumberList },
  { &hf_gsm_map_ms_an_APDU  , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AccessNetworkSignalInfo },
  { &hf_gsm_map_ms_multicallBearerInfo, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MulticallBearerInfo },
  { &hf_gsm_map_ms_multipleBearerNotSupported, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_selectedUMTS_Algorithms, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SelectedUMTS_Algorithms },
  { &hf_gsm_map_ms_chosenRadioResourceInformation, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChosenRadioResourceInformation },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_iuSelectedCodec, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec },
  { &hf_gsm_map_ms_iuAvailableCodecsList, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CodecList },
  { &hf_gsm_map_ms_aoipSelectedCodecTarget, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec },
  { &hf_gsm_map_ms_aoipAvailableCodecsListMap, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodecsList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_PrepareHO_Res_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_PrepareHO_Res_U_sequence, hf_index, ett_gsm_map_ms_PrepareHO_Res_U);

  return offset;
}



static int
dissect_gsm_map_ms_PrepareHO_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
                                      hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_PrepareHO_Res_U);

  return offset;
}


static const ber_sequence_t gsm_map_ms_PrepareSubsequentHO_Arg_U_sequence[] = {
  { &hf_gsm_map_ms_targetCellId, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GlobalCellId },
  { &hf_gsm_map_ms_targetMSC_Number, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_targetRNCId, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RNCId },
  { &hf_gsm_map_ms_an_APDU  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AccessNetworkSignalInfo },
  { &hf_gsm_map_ms_selectedRab_Id, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RAB_Id },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_geran_classmark, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GERAN_Classmark },
  { &hf_gsm_map_ms_rab_ConfigurationIndicator, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_PrepareSubsequentHO_Arg_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_PrepareSubsequentHO_Arg_U_sequence, hf_index, ett_gsm_map_ms_PrepareSubsequentHO_Arg_U);

  return offset;
}



static int
dissect_gsm_map_ms_PrepareSubsequentHO_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
                                      hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_PrepareSubsequentHO_Arg_U);

  return offset;
}


static const ber_sequence_t gsm_map_ms_PrepareSubsequentHO_Res_U_sequence[] = {
  { &hf_gsm_map_ms_an_APDU  , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_AccessNetworkSignalInfo },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_PrepareSubsequentHO_Res_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_PrepareSubsequentHO_Res_U_sequence, hf_index, ett_gsm_map_ms_PrepareSubsequentHO_Res_U);

  return offset;
}



static int
dissect_gsm_map_ms_PrepareSubsequentHO_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
                                      hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_PrepareSubsequentHO_Res_U);

  return offset;
}



static int
dissect_gsm_map_ms_SelectedGSM_Algorithm(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ProcessAccessSignalling_Arg_U_sequence[] = {
  { &hf_gsm_map_ms_an_APDU  , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_AccessNetworkSignalInfo },
  { &hf_gsm_map_ms_selectedUMTS_Algorithms, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SelectedUMTS_Algorithms },
  { &hf_gsm_map_ms_selectedGSM_Algorithm, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SelectedGSM_Algorithm },
  { &hf_gsm_map_ms_chosenRadioResourceInformation, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChosenRadioResourceInformation },
  { &hf_gsm_map_ms_selectedRab_Id, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RAB_Id },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_iUSelectedCodec, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Codec },
  { &hf_gsm_map_ms_iuAvailableCodecsList, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CodecList },
  { &hf_gsm_map_ms_aoipSelectedCodecTarget, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodec },
  { &hf_gsm_map_ms_aoipAvailableCodecsListMap, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AoIPCodecsList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_ProcessAccessSignalling_Arg_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_ProcessAccessSignalling_Arg_U_sequence, hf_index, ett_gsm_map_ms_ProcessAccessSignalling_Arg_U);

  return offset;
}



static int
dissect_gsm_map_ms_ProcessAccessSignalling_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
                                      hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_ProcessAccessSignalling_Arg_U);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SendEndSignal_Arg_U_sequence[] = {
  { &hf_gsm_map_ms_an_APDU  , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_AccessNetworkSignalInfo },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SendEndSignal_Arg_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SendEndSignal_Arg_U_sequence, hf_index, ett_gsm_map_ms_SendEndSignal_Arg_U);

  return offset;
}



static int
dissect_gsm_map_ms_SendEndSignal_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
                                      hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_SendEndSignal_Arg_U);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SendEndSignal_Res_sequence[] = {
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SendEndSignal_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SendEndSignal_Res_sequence, hf_index, ett_gsm_map_ms_SendEndSignal_Res);

  return offset;
}


static const ber_sequence_t gsm_map_ms_Re_synchronisationInfo_sequence[] = {
  { &hf_gsm_map_ms_rand     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RAND },
  { &hf_gsm_map_ms_auts     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_AUTS },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_Re_synchronisationInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_Re_synchronisationInfo_sequence, hf_index, ett_gsm_map_ms_Re_synchronisationInfo);

  return offset;
}


static const value_string gsm_map_ms_RequestingNodeType_vals[] = {
  {   0, "vlr" },
  {   1, "sgsn" },
  {   2, "s-cscf" },
  {   3, "bsf" },
  {   4, "gan-aaa-server" },
  {   5, "wlan-aaa-server" },
  {  16, "mme" },
  {  17, "mme-sgsn" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_RequestingNodeType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SendAuthenticationInfoArg_sequence[] = {
  { &hf_gsm_map_ms_imsi     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ms_numberOfRequestedVectors, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NumberOfRequestedVectors },
  { &hf_gsm_map_ms_segmentationProhibited, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_immediateResponsePreferred, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_re_synchronisationInfo, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Re_synchronisationInfo },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_requestingNodeType, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RequestingNodeType },
  { &hf_gsm_map_ms_requestingPLMN_Id, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_PLMN_Id },
  { &hf_gsm_map_ms_numberOfRequestedAdditional_Vectors, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NumberOfRequestedVectors },
  { &hf_gsm_map_ms_additionalVectorsAreForEPS, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SendAuthenticationInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SendAuthenticationInfoArg_sequence, hf_index, ett_gsm_map_ms_SendAuthenticationInfoArg);

  return offset;
}



static int
dissect_gsm_map_ms_KASME(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_EPC_AV_sequence[] = {
  { &hf_gsm_map_ms_rand     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RAND },
  { &hf_gsm_map_ms_xres     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_XRES },
  { &hf_gsm_map_ms_autn     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_AUTN },
  { &hf_gsm_map_ms_kasme    , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_KASME },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_EPC_AV(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_EPC_AV_sequence, hf_index, ett_gsm_map_ms_EPC_AV);

  return offset;
}


static const ber_sequence_t gsm_map_ms_EPS_AuthenticationSetList_sequence_of[1] = {
  { &hf_gsm_map_ms_EPS_AuthenticationSetList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_EPC_AV },
};

static int
dissect_gsm_map_ms_EPS_AuthenticationSetList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_EPS_AuthenticationSetList_sequence_of, hf_index, ett_gsm_map_ms_EPS_AuthenticationSetList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SendAuthenticationInfoRes_U_sequence[] = {
  { &hf_gsm_map_ms_authenticationSetList, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_AuthenticationSetList },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_eps_AuthenticationSetList, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EPS_AuthenticationSetList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SendAuthenticationInfoRes_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SendAuthenticationInfoRes_U_sequence, hf_index, ett_gsm_map_ms_SendAuthenticationInfoRes_U);

  return offset;
}



static int
dissect_gsm_map_ms_SendAuthenticationInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
                                      hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ms_SendAuthenticationInfoRes_U);

  return offset;
}


static const asn_namedbit gsm_map_ms_RequestedEquipmentInfo_bits[] = {
  {  0, &hf_gsm_map_ms_RequestedEquipmentInfo_equipmentStatus, -1, -1, "equipmentStatus", NULL },
  {  1, &hf_gsm_map_ms_RequestedEquipmentInfo_bmuef, -1, -1, "bmuef", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_ms_RequestedEquipmentInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_ms_RequestedEquipmentInfo_bits, hf_index, ett_gsm_map_ms_RequestedEquipmentInfo,
                                    NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_CheckIMEI_Arg_sequence[] = {
  { &hf_gsm_map_ms_imei     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMEI },
  { &hf_gsm_map_ms_requestedEquipmentInfo, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_RequestedEquipmentInfo },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_CheckIMEI_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_CheckIMEI_Arg_sequence, hf_index, ett_gsm_map_ms_CheckIMEI_Arg);

  return offset;
}


static const value_string gsm_map_ms_EquipmentStatus_vals[] = {
  {   0, "whiteListed" },
  {   1, "blackListed" },
  {   2, "greyListed" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_EquipmentStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_CheckIMEI_Res_sequence[] = {
  { &hf_gsm_map_ms_equipmentStatus, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_EquipmentStatus },
  { &hf_gsm_map_ms_bmuef    , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_UESBI_Iu },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_CheckIMEI_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_CheckIMEI_Res_sequence, hf_index, ett_gsm_map_ms_CheckIMEI_Res);

  return offset;
}



static int
dissect_gsm_map_ms_Category(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const value_string gsm_map_ms_SubscriberStatus_vals[] = {
  {   0, "serviceGranted" },
  {   1, "operatorDeterminedBarring" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_SubscriberStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_BearerServiceList_sequence_of[1] = {
  { &hf_gsm_map_ms_BearerServiceList_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_BearerServiceCode },
};

static int
dissect_gsm_map_ms_BearerServiceList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_BearerServiceList_sequence_of, hf_index, ett_gsm_map_ms_BearerServiceList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_TeleserviceList_sequence_of[1] = {
  { &hf_gsm_map_ms_TeleserviceList_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_TeleserviceCode },
};

static int
dissect_gsm_map_ms_TeleserviceList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_TeleserviceList_sequence_of, hf_index, ett_gsm_map_ms_TeleserviceList);

  return offset;
}



int
dissect_gsm_map_ms_Ext_ForwOptions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_T_forwardingOptions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_gsm_map_ms_Ext_ForwOptions(implicit_tag, tvb, offset, actx, tree, hf_index);

#line 490 "../../asn1/gsm_map/gsm_map.cnf"

	proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,FALSE);
	proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,FALSE);
	proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,FALSE);
	proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,FALSE);



  return offset;
}



int
dissect_gsm_map_ms_Ext_NoRepCondTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_Ext_ForwFeature_sequence[] = {
  { &hf_gsm_map_ms_basicService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_BasicServiceCode },
  { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status },
  { &hf_gsm_map_ms_forwardedToNumber, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_forwardedToSubaddress, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_SubaddressString },
  { &hf_gsm_map_ms_forwardingOptions, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_forwardingOptions },
  { &hf_gsm_map_ms_noReplyConditionTime, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_NoRepCondTime },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_longForwardedToNumber, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_FTN_AddressString },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_Ext_ForwFeature(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_Ext_ForwFeature_sequence, hf_index, ett_gsm_map_ms_Ext_ForwFeature);

  return offset;
}


static const ber_sequence_t gsm_map_ms_Ext_ForwFeatureList_sequence_of[1] = {
  { &hf_gsm_map_ms_Ext_ForwFeatureList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Ext_ForwFeature },
};

static int
dissect_gsm_map_ms_Ext_ForwFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_Ext_ForwFeatureList_sequence_of, hf_index, ett_gsm_map_ms_Ext_ForwFeatureList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_Ext_ForwInfo_sequence[] = {
  { &hf_gsm_map_ms_ss_Code  , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ms_forwardingFeatureList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Ext_ForwFeatureList },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_Ext_ForwInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_Ext_ForwInfo_sequence, hf_index, ett_gsm_map_ms_Ext_ForwInfo);

  return offset;
}


static const ber_sequence_t gsm_map_ms_Ext_CallBarringFeature_sequence[] = {
  { &hf_gsm_map_ms_basicService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_BasicServiceCode },
  { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_Ext_CallBarringFeature(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_Ext_CallBarringFeature_sequence, hf_index, ett_gsm_map_ms_Ext_CallBarringFeature);

  return offset;
}


static const ber_sequence_t gsm_map_ms_Ext_CallBarFeatureList_sequence_of[1] = {
  { &hf_gsm_map_ms_Ext_CallBarFeatureList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Ext_CallBarringFeature },
};

static int
dissect_gsm_map_ms_Ext_CallBarFeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_Ext_CallBarFeatureList_sequence_of, hf_index, ett_gsm_map_ms_Ext_CallBarFeatureList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_Ext_CallBarInfo_sequence[] = {
  { &hf_gsm_map_ms_ss_Code  , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ms_callBarringFeatureList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Ext_CallBarFeatureList },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_Ext_CallBarInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_Ext_CallBarInfo_sequence, hf_index, ett_gsm_map_ms_Ext_CallBarInfo);

  return offset;
}



int
dissect_gsm_map_ms_CUG_Index(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



int
dissect_gsm_map_ms_CUG_Interlock(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const value_string gsm_map_ms_IntraCUG_Options_vals[] = {
  {   0, "noCUG-Restrictions" },
  {   1, "cugIC-CallBarred" },
  {   2, "cugOG-CallBarred" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_IntraCUG_Options(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_Ext_BasicServiceGroupList_sequence_of[1] = {
  { &hf_gsm_map_ms_Ext_BasicServiceGroupList_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_BasicServiceCode },
};

static int
dissect_gsm_map_ms_Ext_BasicServiceGroupList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_Ext_BasicServiceGroupList_sequence_of, hf_index, ett_gsm_map_ms_Ext_BasicServiceGroupList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_CUG_Subscription_sequence[] = {
  { &hf_gsm_map_ms_cug_Index, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CUG_Index },
  { &hf_gsm_map_ms_cug_Interlock, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CUG_Interlock },
  { &hf_gsm_map_ms_intraCUG_Options, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_IntraCUG_Options },
  { &hf_gsm_map_ms_basicServiceGroupList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Ext_BasicServiceGroupList },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_CUG_Subscription(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_CUG_Subscription_sequence, hf_index, ett_gsm_map_ms_CUG_Subscription);

  return offset;
}


static const ber_sequence_t gsm_map_ms_CUG_SubscriptionList_sequence_of[1] = {
  { &hf_gsm_map_ms_CUG_SubscriptionList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CUG_Subscription },
};

static int
dissect_gsm_map_ms_CUG_SubscriptionList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_CUG_SubscriptionList_sequence_of, hf_index, ett_gsm_map_ms_CUG_SubscriptionList);

  return offset;
}



static int
dissect_gsm_map_ms_InterCUG_Restrictions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_CUG_Feature_sequence[] = {
  { &hf_gsm_map_ms_basicService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_BasicServiceCode },
  { &hf_gsm_map_ms_preferentialCUG_Indicator, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CUG_Index },
  { &hf_gsm_map_ms_interCUG_Restrictions, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_InterCUG_Restrictions },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_CUG_Feature(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_CUG_Feature_sequence, hf_index, ett_gsm_map_ms_CUG_Feature);

  return offset;
}


static const ber_sequence_t gsm_map_ms_CUG_FeatureList_sequence_of[1] = {
  { &hf_gsm_map_ms_CUG_FeatureList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CUG_Feature },
};

static int
dissect_gsm_map_ms_CUG_FeatureList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_CUG_FeatureList_sequence_of, hf_index, ett_gsm_map_ms_CUG_FeatureList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_CUG_Info_sequence[] = {
  { &hf_gsm_map_ms_cug_SubscriptionList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CUG_SubscriptionList },
  { &hf_gsm_map_ms_cug_FeatureList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CUG_FeatureList },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ms_CUG_Info(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_CUG_Info_sequence, hf_index, ett_gsm_map_ms_CUG_Info);

  return offset;
}


static const ber_sequence_t gsm_map_ms_Ext_SS_Data_sequence[] = {
  { &hf_gsm_map_ms_ss_Code  , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status },
  { &hf_gsm_map_ms_ss_SubscriptionOption, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_SS_SubscriptionOption },
  { &hf_gsm_map_ms_basicServiceGroupList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Ext_BasicServiceGroupList },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_Ext_SS_Data(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_Ext_SS_Data_sequence, hf_index, ett_gsm_map_ms_Ext_SS_Data);

  return offset;
}


static const value_string gsm_map_ms_Ext_SS_Info_vals[] = {
  {   0, "forwardingInfo" },
  {   1, "callBarringInfo" },
  {   2, "cug-Info" },
  {   3, "ss-Data" },
  {   4, "emlpp-Info" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_ms_Ext_SS_Info_choice[] = {
  {   0, &hf_gsm_map_ms_forwardingInfo, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_ForwInfo },
  {   1, &hf_gsm_map_ms_callBarringInfo, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_CallBarInfo },
  {   2, &hf_gsm_map_ms_cug_Info , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CUG_Info },
  {   3, &hf_gsm_map_ms_ss_Data  , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_SS_Data },
  {   4, &hf_gsm_map_ms_emlpp_Info, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_EMLPP_Info },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_Ext_SS_Info(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_ms_Ext_SS_Info_choice, hf_index, ett_gsm_map_ms_Ext_SS_Info,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_Ext_SS_InfoList_sequence_of[1] = {
  { &hf_gsm_map_ms_Ext_SS_InfoList_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_Ext_SS_Info },
};

static int
dissect_gsm_map_ms_Ext_SS_InfoList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_Ext_SS_InfoList_sequence_of, hf_index, ett_gsm_map_ms_Ext_SS_InfoList);

  return offset;
}


static const asn_namedbit gsm_map_ms_ODB_GeneralData_bits[] = {
  {  0, &hf_gsm_map_ms_ODB_GeneralData_allOG_CallsBarred, -1, -1, "allOG-CallsBarred", NULL },
  {  1, &hf_gsm_map_ms_ODB_GeneralData_internationalOGCallsBarred, -1, -1, "internationalOGCallsBarred", NULL },
  {  2, &hf_gsm_map_ms_ODB_GeneralData_internationalOGCallsNotToHPLMN_CountryBarred, -1, -1, "internationalOGCallsNotToHPLMN-CountryBarred", NULL },
  {  6, &hf_gsm_map_ms_ODB_GeneralData_interzonalOGCallsBarred, -1, -1, "interzonalOGCallsBarred", NULL },
  {  7, &hf_gsm_map_ms_ODB_GeneralData_interzonalOGCallsNotToHPLMN_CountryBarred, -1, -1, "interzonalOGCallsNotToHPLMN-CountryBarred", NULL },
  {  8, &hf_gsm_map_ms_ODB_GeneralData_interzonalOGCallsAndInternationalOGCallsNotToHPLMN_CountryBarred, -1, -1, "interzonalOGCallsAndInternationalOGCallsNotToHPLMN-CountryBarred", NULL },
  {  3, &hf_gsm_map_ms_ODB_GeneralData_premiumRateInformationOGCallsBarred, -1, -1, "premiumRateInformationOGCallsBarred", NULL },
  {  4, &hf_gsm_map_ms_ODB_GeneralData_premiumRateEntertainementOGCallsBarred, -1, -1, "premiumRateEntertainementOGCallsBarred", NULL },
  {  5, &hf_gsm_map_ms_ODB_GeneralData_ss_AccessBarred, -1, -1, "ss-AccessBarred", NULL },
  {  9, &hf_gsm_map_ms_ODB_GeneralData_allECT_Barred, -1, -1, "allECT-Barred", NULL },
  { 10, &hf_gsm_map_ms_ODB_GeneralData_chargeableECT_Barred, -1, -1, "chargeableECT-Barred", NULL },
  { 11, &hf_gsm_map_ms_ODB_GeneralData_internationalECT_Barred, -1, -1, "internationalECT-Barred", NULL },
  { 12, &hf_gsm_map_ms_ODB_GeneralData_interzonalECT_Barred, -1, -1, "interzonalECT-Barred", NULL },
  { 13, &hf_gsm_map_ms_ODB_GeneralData_doublyChargeableECT_Barred, -1, -1, "doublyChargeableECT-Barred", NULL },
  { 14, &hf_gsm_map_ms_ODB_GeneralData_multipleECT_Barred, -1, -1, "multipleECT-Barred", NULL },
  { 15, &hf_gsm_map_ms_ODB_GeneralData_allPacketOrientedServicesBarred, -1, -1, "allPacketOrientedServicesBarred", NULL },
  { 16, &hf_gsm_map_ms_ODB_GeneralData_roamerAccessToHPLMN_AP_Barred, -1, -1, "roamerAccessToHPLMN-AP-Barred", NULL },
  { 17, &hf_gsm_map_ms_ODB_GeneralData_roamerAccessToVPLMN_AP_Barred, -1, -1, "roamerAccessToVPLMN-AP-Barred", NULL },
  { 18, &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMNOG_CallsBarred, -1, -1, "roamingOutsidePLMNOG-CallsBarred", NULL },
  { 19, &hf_gsm_map_ms_ODB_GeneralData_allIC_CallsBarred, -1, -1, "allIC-CallsBarred", NULL },
  { 20, &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMNIC_CallsBarred, -1, -1, "roamingOutsidePLMNIC-CallsBarred", NULL },
  { 21, &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMNICountryIC_CallsBarred, -1, -1, "roamingOutsidePLMNICountryIC-CallsBarred", NULL },
  { 22, &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMN_Barred, -1, -1, "roamingOutsidePLMN-Barred", NULL },
  { 23, &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMN_CountryBarred, -1, -1, "roamingOutsidePLMN-CountryBarred", NULL },
  { 24, &hf_gsm_map_ms_ODB_GeneralData_registrationAllCF_Barred, -1, -1, "registrationAllCF-Barred", NULL },
  { 25, &hf_gsm_map_ms_ODB_GeneralData_registrationCFNotToHPLMN_Barred, -1, -1, "registrationCFNotToHPLMN-Barred", NULL },
  { 26, &hf_gsm_map_ms_ODB_GeneralData_registrationInterzonalCF_Barred, -1, -1, "registrationInterzonalCF-Barred", NULL },
  { 27, &hf_gsm_map_ms_ODB_GeneralData_registrationInterzonalCFNotToHPLMN_Barred, -1, -1, "registrationInterzonalCFNotToHPLMN-Barred", NULL },
  { 28, &hf_gsm_map_ms_ODB_GeneralData_registrationInternationalCF_Barred, -1, -1, "registrationInternationalCF-Barred", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_ms_ODB_GeneralData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_ms_ODB_GeneralData_bits, hf_index, ett_gsm_map_ms_ODB_GeneralData,
                                    NULL);

  return offset;
}


static const asn_namedbit gsm_map_ms_ODB_HPLMN_Data_bits[] = {
  {  0, &hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType1, -1, -1, "plmn-SpecificBarringType1", NULL },
  {  1, &hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType2, -1, -1, "plmn-SpecificBarringType2", NULL },
  {  2, &hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType3, -1, -1, "plmn-SpecificBarringType3", NULL },
  {  3, &hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType4, -1, -1, "plmn-SpecificBarringType4", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_ms_ODB_HPLMN_Data(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_ms_ODB_HPLMN_Data_bits, hf_index, ett_gsm_map_ms_ODB_HPLMN_Data,
                                    NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ODB_Data_sequence[] = {
  { &hf_gsm_map_ms_odb_GeneralData, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ODB_GeneralData },
  { &hf_gsm_map_ms_odb_HPLMN_Data, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ODB_HPLMN_Data },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_ODB_Data(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_ODB_Data_sequence, hf_index, ett_gsm_map_ms_ODB_Data);

  return offset;
}



static int
dissect_gsm_map_ms_ZoneCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ZoneCodeList_sequence_of[1] = {
  { &hf_gsm_map_ms_ZoneCodeList_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ZoneCode },
};

static int
dissect_gsm_map_ms_ZoneCodeList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_ZoneCodeList_sequence_of, hf_index, ett_gsm_map_ms_ZoneCodeList);

  return offset;
}



static int
dissect_gsm_map_ms_GroupId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, actx, tree, hf_index);

  return offset;
}



static int
dissect_gsm_map_ms_Long_GroupId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, actx, tree, hf_index);

  return offset;
}


static const ber_sequence_t gsm_map_ms_VoiceBroadcastData_sequence[] = {
  { &hf_gsm_map_ms_groupid  , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_GroupId },
  { &hf_gsm_map_ms_broadcastInitEntitlement, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_longGroupId, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Long_GroupId },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_VoiceBroadcastData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_VoiceBroadcastData_sequence, hf_index, ett_gsm_map_ms_VoiceBroadcastData);

  return offset;
}


static const ber_sequence_t gsm_map_ms_VBSDataList_sequence_of[1] = {
  { &hf_gsm_map_ms_VBSDataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_VoiceBroadcastData },
};

static int
dissect_gsm_map_ms_VBSDataList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_VBSDataList_sequence_of, hf_index, ett_gsm_map_ms_VBSDataList);

  return offset;
}


static const asn_namedbit gsm_map_ms_AdditionalSubscriptions_bits[] = {
  {  0, &hf_gsm_map_ms_AdditionalSubscriptions_privilegedUplinkRequest, -1, -1, "privilegedUplinkRequest", NULL },
  {  1, &hf_gsm_map_ms_AdditionalSubscriptions_emergencyUplinkRequest, -1, -1, "emergencyUplinkRequest", NULL },
  {  2, &hf_gsm_map_ms_AdditionalSubscriptions_emergencyReset, -1, -1, "emergencyReset", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_ms_AdditionalSubscriptions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_ms_AdditionalSubscriptions_bits, hf_index, ett_gsm_map_ms_AdditionalSubscriptions,
                                    NULL);

  return offset;
}



static int
dissect_gsm_map_ms_AdditionalInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    NULL, hf_index, -1,
                                    NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_VoiceGroupCallData_sequence[] = {
  { &hf_gsm_map_ms_groupId  , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_GroupId },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_additionalSubscriptions, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_AdditionalSubscriptions },
  { &hf_gsm_map_ms_additionalInfo, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdditionalInfo },
  { &hf_gsm_map_ms_longGroupId, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Long_GroupId },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_VoiceGroupCallData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_VoiceGroupCallData_sequence, hf_index, ett_gsm_map_ms_VoiceGroupCallData);

  return offset;
}


static const ber_sequence_t gsm_map_ms_VGCSDataList_sequence_of[1] = {
  { &hf_gsm_map_ms_VGCSDataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_VoiceGroupCallData },
};

static int
dissect_gsm_map_ms_VGCSDataList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_VGCSDataList_sequence_of, hf_index, ett_gsm_map_ms_VGCSDataList);

  return offset;
}


static const value_string gsm_map_ms_O_BcsmTriggerDetectionPoint_vals[] = {
  {   2, "collectedInfo" },
  {   4, "routeSelectFailure" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_O_BcsmTriggerDetectionPoint(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}



int
dissect_gsm_map_ms_ServiceKey(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const value_string gsm_map_ms_DefaultCallHandling_vals[] = {
  {   0, "continueCall" },
  {   1, "releaseCall" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_DefaultCallHandling(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_O_BcsmCamelTDPData_sequence[] = {
  { &hf_gsm_map_ms_o_BcsmTriggerDetectionPoint, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_O_BcsmTriggerDetectionPoint },
  { &hf_gsm_map_ms_serviceKey, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ServiceKey },
  { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_defaultCallHandling, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DefaultCallHandling },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_O_BcsmCamelTDPData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_O_BcsmCamelTDPData_sequence, hf_index, ett_gsm_map_ms_O_BcsmCamelTDPData);

  return offset;
}


static const ber_sequence_t gsm_map_ms_O_BcsmCamelTDPDataList_sequence_of[1] = {
  { &hf_gsm_map_ms_O_BcsmCamelTDPDataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_O_BcsmCamelTDPData },
};

static int
dissect_gsm_map_ms_O_BcsmCamelTDPDataList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_O_BcsmCamelTDPDataList_sequence_of, hf_index, ett_gsm_map_ms_O_BcsmCamelTDPDataList);

  return offset;
}



static int
dissect_gsm_map_ms_CamelCapabilityHandling(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_O_CSI_sequence[] = {
  { &hf_gsm_map_ms_o_BcsmCamelTDPDataList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_O_BcsmCamelTDPDataList },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_camelCapabilityHandling, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CamelCapabilityHandling },
  { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_csiActive, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ms_O_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_O_CSI_sequence, hf_index, ett_gsm_map_ms_O_CSI);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SS_EventList_sequence_of[1] = {
  { &hf_gsm_map_ms_SS_EventList_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code },
};

static int
dissect_gsm_map_ms_SS_EventList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_SS_EventList_sequence_of, hf_index, ett_gsm_map_ms_SS_EventList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SS_CamelData_sequence[] = {
  { &hf_gsm_map_ms_ss_EventList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_SS_EventList },
  { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SS_CamelData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SS_CamelData_sequence, hf_index, ett_gsm_map_ms_SS_CamelData);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SS_CSI_sequence[] = {
  { &hf_gsm_map_ms_ss_CamelData, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_SS_CamelData },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_csi_Active, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SS_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SS_CSI_sequence, hf_index, ett_gsm_map_ms_SS_CSI);

  return offset;
}


static const value_string gsm_map_ms_MatchType_vals[] = {
  {   0, "inhibiting" },
  {   1, "enabling" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_MatchType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_DestinationNumberList_sequence_of[1] = {
  { &hf_gsm_map_ms_DestinationNumberList_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
};

static int
dissect_gsm_map_ms_DestinationNumberList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_DestinationNumberList_sequence_of, hf_index, ett_gsm_map_ms_DestinationNumberList);

  return offset;
}



static int
dissect_gsm_map_ms_INTEGER_1_maxNumOfISDN_AddressDigits(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_DestinationNumberLengthList_sequence_of[1] = {
  { &hf_gsm_map_ms_DestinationNumberLengthList_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_INTEGER_1_maxNumOfISDN_AddressDigits },
};

static int
dissect_gsm_map_ms_DestinationNumberLengthList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_DestinationNumberLengthList_sequence_of, hf_index, ett_gsm_map_ms_DestinationNumberLengthList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_DestinationNumberCriteria_sequence[] = {
  { &hf_gsm_map_ms_matchType, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MatchType },
  { &hf_gsm_map_ms_destinationNumberList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DestinationNumberList },
  { &hf_gsm_map_ms_destinationNumberLengthList, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DestinationNumberLengthList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_DestinationNumberCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_DestinationNumberCriteria_sequence, hf_index, ett_gsm_map_ms_DestinationNumberCriteria);

  return offset;
}


static const ber_sequence_t gsm_map_ms_BasicServiceCriteria_sequence_of[1] = {
  { &hf_gsm_map_ms_BasicServiceCriteria_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_BasicServiceCode },
};

static int
dissect_gsm_map_ms_BasicServiceCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_BasicServiceCriteria_sequence_of, hf_index, ett_gsm_map_ms_BasicServiceCriteria);

  return offset;
}


static const value_string gsm_map_ms_CallTypeCriteria_vals[] = {
  {   0, "forwarded" },
  {   1, "notForwarded" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_CallTypeCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}



static int
dissect_gsm_map_ms_CauseValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_O_CauseValueCriteria_sequence_of[1] = {
  { &hf_gsm_map_ms_O_CauseValueCriteria_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CauseValue },
};

static int
dissect_gsm_map_ms_O_CauseValueCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_O_CauseValueCriteria_sequence_of, hf_index, ett_gsm_map_ms_O_CauseValueCriteria);

  return offset;
}


static const ber_sequence_t gsm_map_ms_O_BcsmCamelTDP_Criteria_sequence[] = {
  { &hf_gsm_map_ms_o_BcsmTriggerDetectionPoint, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_O_BcsmTriggerDetectionPoint },
  { &hf_gsm_map_ms_destinationNumberCriteria, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DestinationNumberCriteria },
  { &hf_gsm_map_ms_basicServiceCriteria, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BasicServiceCriteria },
  { &hf_gsm_map_ms_callTypeCriteria, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CallTypeCriteria },
  { &hf_gsm_map_ms_o_CauseValueCriteria, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_CauseValueCriteria },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_O_BcsmCamelTDP_Criteria(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_O_BcsmCamelTDP_Criteria_sequence, hf_index, ett_gsm_map_ms_O_BcsmCamelTDP_Criteria);

  return offset;
}


static const ber_sequence_t gsm_map_ms_O_BcsmCamelTDPCriteriaList_sequence_of[1] = {
  { &hf_gsm_map_ms_O_BcsmCamelTDPCriteriaList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_O_BcsmCamelTDP_Criteria },
};

int
dissect_gsm_map_ms_O_BcsmCamelTDPCriteriaList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_O_BcsmCamelTDPCriteriaList_sequence_of, hf_index, ett_gsm_map_ms_O_BcsmCamelTDPCriteriaList);

  return offset;
}



static int
dissect_gsm_map_ms_MM_Code(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_MobilityTriggers_sequence_of[1] = {
  { &hf_gsm_map_ms_MobilityTriggers_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_MM_Code },
};

static int
dissect_gsm_map_ms_MobilityTriggers(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_MobilityTriggers_sequence_of, hf_index, ett_gsm_map_ms_MobilityTriggers);

  return offset;
}


static const ber_sequence_t gsm_map_ms_M_CSI_sequence[] = {
  { &hf_gsm_map_ms_mobilityTriggers, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_MobilityTriggers },
  { &hf_gsm_map_ms_serviceKey, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ServiceKey },
  { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_csi_Active, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_M_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_M_CSI_sequence, hf_index, ett_gsm_map_ms_M_CSI);

  return offset;
}


static const value_string gsm_map_ms_SMS_TriggerDetectionPoint_vals[] = {
  {   1, "sms-CollectedInfo" },
  {   2, "sms-DeliveryRequest" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_SMS_TriggerDetectionPoint(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


const value_string gsm_map_ms_DefaultSMS_Handling_vals[] = {
  {   0, "continueTransaction" },
  {   1, "releaseTransaction" },
  { 0, NULL }
};


int
dissect_gsm_map_ms_DefaultSMS_Handling(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SMS_CAMEL_TDP_Data_sequence[] = {
  { &hf_gsm_map_ms_sms_TriggerDetectionPoint, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SMS_TriggerDetectionPoint },
  { &hf_gsm_map_ms_serviceKey, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ServiceKey },
  { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_defaultSMS_Handling, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DefaultSMS_Handling },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SMS_CAMEL_TDP_Data(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SMS_CAMEL_TDP_Data_sequence, hf_index, ett_gsm_map_ms_SMS_CAMEL_TDP_Data);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SMS_CAMEL_TDP_DataList_sequence_of[1] = {
  { &hf_gsm_map_ms_SMS_CAMEL_TDP_DataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_SMS_CAMEL_TDP_Data },
};

static int
dissect_gsm_map_ms_SMS_CAMEL_TDP_DataList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_SMS_CAMEL_TDP_DataList_sequence_of, hf_index, ett_gsm_map_ms_SMS_CAMEL_TDP_DataList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SMS_CSI_sequence[] = {
  { &hf_gsm_map_ms_sms_CAMEL_TDP_DataList, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SMS_CAMEL_TDP_DataList },
  { &hf_gsm_map_ms_camelCapabilityHandling, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CamelCapabilityHandling },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_csi_Active, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SMS_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SMS_CSI_sequence, hf_index, ett_gsm_map_ms_SMS_CSI);

  return offset;
}


static const value_string gsm_map_ms_T_BcsmTriggerDetectionPoint_vals[] = {
  {  12, "termAttemptAuthorized" },
  {  13, "tBusy" },
  {  14, "tNoAnswer" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_T_BcsmTriggerDetectionPoint(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_T_BcsmCamelTDPData_sequence[] = {
  { &hf_gsm_map_ms_t_BcsmTriggerDetectionPoint, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_T_BcsmTriggerDetectionPoint },
  { &hf_gsm_map_ms_serviceKey, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ServiceKey },
  { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_defaultCallHandling, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DefaultCallHandling },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_T_BcsmCamelTDPData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_T_BcsmCamelTDPData_sequence, hf_index, ett_gsm_map_ms_T_BcsmCamelTDPData);

  return offset;
}


static const ber_sequence_t gsm_map_ms_T_BcsmCamelTDPDataList_sequence_of[1] = {
  { &hf_gsm_map_ms_T_BcsmCamelTDPDataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_T_BcsmCamelTDPData },
};

static int
dissect_gsm_map_ms_T_BcsmCamelTDPDataList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_T_BcsmCamelTDPDataList_sequence_of, hf_index, ett_gsm_map_ms_T_BcsmCamelTDPDataList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_T_CSI_sequence[] = {
  { &hf_gsm_map_ms_t_BcsmCamelTDPDataList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_T_BcsmCamelTDPDataList },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_camelCapabilityHandling, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CamelCapabilityHandling },
  { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_csi_Active, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_T_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_T_CSI_sequence, hf_index, ett_gsm_map_ms_T_CSI);

  return offset;
}


static const ber_sequence_t gsm_map_ms_T_CauseValueCriteria_sequence_of[1] = {
  { &hf_gsm_map_ms_T_CauseValueCriteria_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CauseValue },
};

static int
dissect_gsm_map_ms_T_CauseValueCriteria(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_T_CauseValueCriteria_sequence_of, hf_index, ett_gsm_map_ms_T_CauseValueCriteria);

  return offset;
}


static const ber_sequence_t gsm_map_ms_T_BCSM_CAMEL_TDP_Criteria_sequence[] = {
  { &hf_gsm_map_ms_t_BCSM_TriggerDetectionPoint, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_T_BcsmTriggerDetectionPoint },
  { &hf_gsm_map_ms_basicServiceCriteria, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BasicServiceCriteria },
  { &hf_gsm_map_ms_t_CauseValueCriteria, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_CauseValueCriteria },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_T_BCSM_CAMEL_TDP_Criteria(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_T_BCSM_CAMEL_TDP_Criteria_sequence, hf_index, ett_gsm_map_ms_T_BCSM_CAMEL_TDP_Criteria);

  return offset;
}


static const ber_sequence_t gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList_sequence_of[1] = {
  { &hf_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_T_BCSM_CAMEL_TDP_Criteria },
};

static int
dissect_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList_sequence_of, hf_index, ett_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_DP_AnalysedInfoCriterium_sequence[] = {
  { &hf_gsm_map_ms_dialledNumber, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_serviceKey, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ServiceKey },
  { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_defaultCallHandling, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_DefaultCallHandling },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_DP_AnalysedInfoCriterium(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_DP_AnalysedInfoCriterium_sequence, hf_index, ett_gsm_map_ms_DP_AnalysedInfoCriterium);

  return offset;
}


static const ber_sequence_t gsm_map_ms_DP_AnalysedInfoCriteriaList_sequence_of[1] = {
  { &hf_gsm_map_ms_DP_AnalysedInfoCriteriaList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_DP_AnalysedInfoCriterium },
};

static int
dissect_gsm_map_ms_DP_AnalysedInfoCriteriaList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_DP_AnalysedInfoCriteriaList_sequence_of, hf_index, ett_gsm_map_ms_DP_AnalysedInfoCriteriaList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_D_CSI_sequence[] = {
  { &hf_gsm_map_ms_dp_AnalysedInfoCriteriaList, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DP_AnalysedInfoCriteriaList },
  { &hf_gsm_map_ms_camelCapabilityHandling, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CamelCapabilityHandling },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_csi_Active, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ms_D_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_D_CSI_sequence, hf_index, ett_gsm_map_ms_D_CSI);

  return offset;
}


static const value_string gsm_map_ms_MT_SMS_TPDU_Type_vals[] = {
  {   0, "sms-DELIVER" },
  {   1, "sms-SUBMIT-REPORT" },
  {   2, "sms-STATUS-REPORT" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_MT_SMS_TPDU_Type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_TPDU_TypeCriterion_sequence_of[1] = {
  { &hf_gsm_map_ms_TPDU_TypeCriterion_item, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_MT_SMS_TPDU_Type },
};

static int
dissect_gsm_map_ms_TPDU_TypeCriterion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_TPDU_TypeCriterion_sequence_of, hf_index, ett_gsm_map_ms_TPDU_TypeCriterion);

  return offset;
}


static const ber_sequence_t gsm_map_ms_MT_smsCAMELTDP_Criteria_sequence[] = {
  { &hf_gsm_map_ms_sms_TriggerDetectionPoint, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_SMS_TriggerDetectionPoint },
  { &hf_gsm_map_ms_tpdu_TypeCriterion, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TPDU_TypeCriterion },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_MT_smsCAMELTDP_Criteria(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_MT_smsCAMELTDP_Criteria_sequence, hf_index, ett_gsm_map_ms_MT_smsCAMELTDP_Criteria);

  return offset;
}


static const ber_sequence_t gsm_map_ms_MT_smsCAMELTDP_CriteriaList_sequence_of[1] = {
  { &hf_gsm_map_ms_MT_smsCAMELTDP_CriteriaList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_MT_smsCAMELTDP_Criteria },
};

static int
dissect_gsm_map_ms_MT_smsCAMELTDP_CriteriaList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_MT_smsCAMELTDP_CriteriaList_sequence_of, hf_index, ett_gsm_map_ms_MT_smsCAMELTDP_CriteriaList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_VlrCamelSubscriptionInfo_sequence[] = {
  { &hf_gsm_map_ms_o_CSI    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_CSI },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_ss_CSI   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SS_CSI },
  { &hf_gsm_map_ms_o_BcsmCamelTDP_CriteriaList, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_BcsmCamelTDPCriteriaList },
  { &hf_gsm_map_ms_tif_CSI  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_m_CSI    , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_M_CSI },
  { &hf_gsm_map_ms_mo_sms_CSI, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SMS_CSI },
  { &hf_gsm_map_ms_vt_CSI   , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_CSI },
  { &hf_gsm_map_ms_t_BCSM_CAMEL_TDP_CriteriaList, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList },
  { &hf_gsm_map_ms_d_CSI    , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_D_CSI },
  { &hf_gsm_map_ms_mt_sms_CSI, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SMS_CSI },
  { &hf_gsm_map_ms_mt_smsCAMELTDP_CriteriaList, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MT_smsCAMELTDP_CriteriaList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_VlrCamelSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_VlrCamelSubscriptionInfo_sequence, hf_index, ett_gsm_map_ms_VlrCamelSubscriptionInfo);

  return offset;
}



static int
dissect_gsm_map_ms_PDP_Type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 498 "../../asn1/gsm_map/gsm_map.cnf"
	guint8 pdp_type_org;
	tvbuff_t	*parameter_tvb;


  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);


 if (!parameter_tvb)
	return offset;
	proto_tree_add_item(tree, hf_gsm_map_pdp_type_org, parameter_tvb, 0,1,FALSE);
	pdp_type_org = tvb_get_guint8(parameter_tvb,1);
	switch (pdp_type_org){
		case 0: /* ETSI */
			proto_tree_add_item(tree, hf_gsm_map_etsi_pdp_type_number, parameter_tvb, 0,1,FALSE);
			break;
		case 1: /* IETF */
			proto_tree_add_item(tree, hf_gsm_map_ietf_pdp_type_number, parameter_tvb, 0,1,FALSE);
			break;
		default:
		break;
	}



  return offset;
}



int
dissect_gsm_map_ms_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 520 "../../asn1/gsm_map/gsm_map.cnf"


	tvbuff_t	*parameter_tvb;

  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);


	 if (!parameter_tvb)
		return offset;
	de_sm_qos(parameter_tvb, tree, actx->pinfo, 0, 3, NULL,0);



  return offset;
}



int
dissect_gsm_map_ms_Ext_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 531 "../../asn1/gsm_map/gsm_map.cnf"

	tvbuff_t	*parameter_tvb;

  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);


	if (!parameter_tvb)
		return offset;
	dissect_gsm_map_ext_qos_subscribed(tvb, actx->pinfo, tree, actx);



  return offset;
}



static int
dissect_gsm_map_ms_ChargingCharacteristics(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



int
dissect_gsm_map_ms_Ext2_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



int
dissect_gsm_map_ms_Ext3_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_Ext4_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_APN_OI_Replacement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_Ext_PDP_Type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_PDP_Context_sequence[] = {
  { &hf_gsm_map_ms_pdp_ContextId, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ContextId },
  { &hf_gsm_map_ms_pdp_Type , BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Type },
  { &hf_gsm_map_ms_pdp_Address, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Address },
  { &hf_gsm_map_ms_qos_Subscribed, BER_CLASS_CON, 18, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_QoS_Subscribed },
  { &hf_gsm_map_ms_vplmnAddressAllowed, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_apn      , BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_ext_QoS_Subscribed, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_QoS_Subscribed },
  { &hf_gsm_map_ms_pdp_ChargingCharacteristics, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChargingCharacteristics },
  { &hf_gsm_map_ms_ext2_QoS_Subscribed, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext2_QoS_Subscribed },
  { &hf_gsm_map_ms_ext3_QoS_Subscribed, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext3_QoS_Subscribed },
  { &hf_gsm_map_ms_ext4_QoS_Subscribed, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext4_QoS_Subscribed },
  { &hf_gsm_map_ms_apn_oi_Replacement, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN_OI_Replacement },
  { &hf_gsm_map_ms_ext_pdp_Type, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_PDP_Type },
  { &hf_gsm_map_ms_ext_pdp_Address, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Address },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_PDP_Context(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_PDP_Context_sequence, hf_index, ett_gsm_map_ms_PDP_Context);

  return offset;
}


static const ber_sequence_t gsm_map_ms_GPRSDataList_sequence_of[1] = {
  { &hf_gsm_map_ms_GPRSDataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_PDP_Context },
};

static int
dissect_gsm_map_ms_GPRSDataList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_GPRSDataList_sequence_of, hf_index, ett_gsm_map_ms_GPRSDataList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_GPRSSubscriptionData_sequence[] = {
  { &hf_gsm_map_ms_completeDataListIncluded, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_gprsDataList, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GPRSDataList },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_apn_oi_Replacement, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN_OI_Replacement },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_GPRSSubscriptionData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_GPRSSubscriptionData_sequence, hf_index, ett_gsm_map_ms_GPRSSubscriptionData);

  return offset;
}


static const value_string gsm_map_ms_NetworkAccessMode_vals[] = {
  {   0, "packetAndCircuit" },
  {   1, "onlyCircuit" },
  {   2, "onlyPacket" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_NetworkAccessMode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const value_string gsm_map_ms_LSAOnlyAccessIndicator_vals[] = {
  {   0, "accessOutsideLSAsAllowed" },
  {   1, "accessOutsideLSAsRestricted" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_LSAOnlyAccessIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}



int
dissect_gsm_map_ms_LSAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_LSAAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_LSAData_sequence[] = {
  { &hf_gsm_map_ms_lsaIdentity, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LSAIdentity },
  { &hf_gsm_map_ms_lsaAttributes, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LSAAttributes },
  { &hf_gsm_map_ms_lsaActiveModeIndicator, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_LSAData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_LSAData_sequence, hf_index, ett_gsm_map_ms_LSAData);

  return offset;
}


static const ber_sequence_t gsm_map_ms_LSADataList_sequence_of[1] = {
  { &hf_gsm_map_ms_LSADataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_LSAData },
};

static int
dissect_gsm_map_ms_LSADataList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_LSADataList_sequence_of, hf_index, ett_gsm_map_ms_LSADataList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_LSAInformation_sequence[] = {
  { &hf_gsm_map_ms_completeDataListIncluded, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_lsaOnlyAccessIndicator, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LSAOnlyAccessIndicator },
  { &hf_gsm_map_ms_lsaDataList, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LSADataList },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_LSAInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_LSAInformation_sequence, hf_index, ett_gsm_map_ms_LSAInformation);

  return offset;
}


static const ber_sequence_t gsm_map_ms_GMLC_List_sequence_of[1] = {
  { &hf_gsm_map_ms_GMLC_List_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
};

static int
dissect_gsm_map_ms_GMLC_List(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_GMLC_List_sequence_of, hf_index, ett_gsm_map_ms_GMLC_List);

  return offset;
}


const value_string gsm_map_ms_NotificationToMSUser_vals[] = {
  {   0, "notifyLocationAllowed" },
  {   1, "notifyAndVerify-LocationAllowedIfNoResponse" },
  {   2, "notifyAndVerify-LocationNotAllowedIfNoResponse" },
  {   3, "locationNotAllowed" },
  { 0, NULL }
};


int
dissect_gsm_map_ms_NotificationToMSUser(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const value_string gsm_map_ms_GMLC_Restriction_vals[] = {
  {   0, "gmlc-List" },
  {   1, "home-Country" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_GMLC_Restriction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ExternalClient_sequence[] = {
  { &hf_gsm_map_ms_clientIdentity, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_LCSClientExternalID },
  { &hf_gsm_map_ms_gmlc_Restriction, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GMLC_Restriction },
  { &hf_gsm_map_ms_notificationToMSUser, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NotificationToMSUser },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_ExternalClient(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_ExternalClient_sequence, hf_index, ett_gsm_map_ms_ExternalClient);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ExternalClientList_sequence_of[1] = {
  { &hf_gsm_map_ms_ExternalClientList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ExternalClient },
};

static int
dissect_gsm_map_ms_ExternalClientList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_ExternalClientList_sequence_of, hf_index, ett_gsm_map_ms_ExternalClientList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_PLMNClientList_sequence_of[1] = {
  { &hf_gsm_map_ms_PLMNClientList_item, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_LCSClientInternalID },
};

static int
dissect_gsm_map_ms_PLMNClientList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_PLMNClientList_sequence_of, hf_index, ett_gsm_map_ms_PLMNClientList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_Ext_ExternalClientList_sequence_of[1] = {
  { &hf_gsm_map_ms_Ext_ExternalClientList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ExternalClient },
};

static int
dissect_gsm_map_ms_Ext_ExternalClientList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_Ext_ExternalClientList_sequence_of, hf_index, ett_gsm_map_ms_Ext_ExternalClientList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ServiceType_sequence[] = {
  { &hf_gsm_map_ms_serviceTypeIdentity, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_LCSServiceTypeID },
  { &hf_gsm_map_ms_gmlc_Restriction, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GMLC_Restriction },
  { &hf_gsm_map_ms_notificationToMSUser, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NotificationToMSUser },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_ServiceType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_ServiceType_sequence, hf_index, ett_gsm_map_ms_ServiceType);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ServiceTypeList_sequence_of[1] = {
  { &hf_gsm_map_ms_ServiceTypeList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ServiceType },
};

static int
dissect_gsm_map_ms_ServiceTypeList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_ServiceTypeList_sequence_of, hf_index, ett_gsm_map_ms_ServiceTypeList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_LCS_PrivacyClass_sequence[] = {
  { &hf_gsm_map_ms_ss_Code  , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ms_ss_Status, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_SS_Status },
  { &hf_gsm_map_ms_notificationToMSUser, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NotificationToMSUser },
  { &hf_gsm_map_ms_externalClientList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ExternalClientList },
  { &hf_gsm_map_ms_plmnClientList, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PLMNClientList },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_ext_externalClientList, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_ExternalClientList },
  { &hf_gsm_map_ms_serviceTypeList, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ServiceTypeList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_LCS_PrivacyClass(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_LCS_PrivacyClass_sequence, hf_index, ett_gsm_map_ms_LCS_PrivacyClass);

  return offset;
}


static const ber_sequence_t gsm_map_ms_LCS_PrivacyExceptionList_sequence_of[1] = {
  { &hf_gsm_map_ms_LCS_PrivacyExceptionList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_LCS_PrivacyClass },
};

static int
dissect_gsm_map_ms_LCS_PrivacyExceptionList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_LCS_PrivacyExceptionList_sequence_of, hf_index, ett_gsm_map_ms_LCS_PrivacyExceptionList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_MOLR_Class_sequence[] = {
  { &hf_gsm_map_ms_ss_Code  , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ms_ss_Status, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_SS_Status },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_MOLR_Class(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_MOLR_Class_sequence, hf_index, ett_gsm_map_ms_MOLR_Class);

  return offset;
}


static const ber_sequence_t gsm_map_ms_MOLR_List_sequence_of[1] = {
  { &hf_gsm_map_ms_MOLR_List_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_MOLR_Class },
};

static int
dissect_gsm_map_ms_MOLR_List(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_MOLR_List_sequence_of, hf_index, ett_gsm_map_ms_MOLR_List);

  return offset;
}


static const ber_sequence_t gsm_map_ms_LCSInformation_sequence[] = {
  { &hf_gsm_map_ms_gmlc_List, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GMLC_List },
  { &hf_gsm_map_ms_lcs_PrivacyExceptionList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LCS_PrivacyExceptionList },
  { &hf_gsm_map_ms_molr_List, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MOLR_List },
  { &hf_gsm_map_ms_add_lcs_PrivacyExceptionList, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LCS_PrivacyExceptionList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_LCSInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_LCSInformation_sequence, hf_index, ett_gsm_map_ms_LCSInformation);

  return offset;
}



static int
dissect_gsm_map_ms_IST_AlertTimerValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_map_ms_CS_AllocationRetentionPriority(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const value_string gsm_map_ms_GPRS_TriggerDetectionPoint_vals[] = {
  {   1, "attach" },
  {   2, "attachChangeOfPosition" },
  {  11, "pdp-ContextEstablishment" },
  {  12, "pdp-ContextEstablishmentAcknowledgement" },
  {  14, "pdp-ContextChangeOfPosition" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_GPRS_TriggerDetectionPoint(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


const value_string gsm_map_ms_DefaultGPRS_Handling_vals[] = {
  {   0, "continueTransaction" },
  {   1, "releaseTransaction" },
  { 0, NULL }
};


int
dissect_gsm_map_ms_DefaultGPRS_Handling(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_GPRS_CamelTDPData_sequence[] = {
  { &hf_gsm_map_ms_gprs_TriggerDetectionPoint, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GPRS_TriggerDetectionPoint },
  { &hf_gsm_map_ms_serviceKey, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ServiceKey },
  { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_defaultSessionHandling, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DefaultGPRS_Handling },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_GPRS_CamelTDPData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_GPRS_CamelTDPData_sequence, hf_index, ett_gsm_map_ms_GPRS_CamelTDPData);

  return offset;
}


static const ber_sequence_t gsm_map_ms_GPRS_CamelTDPDataList_sequence_of[1] = {
  { &hf_gsm_map_ms_GPRS_CamelTDPDataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_GPRS_CamelTDPData },
};

static int
dissect_gsm_map_ms_GPRS_CamelTDPDataList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_GPRS_CamelTDPDataList_sequence_of, hf_index, ett_gsm_map_ms_GPRS_CamelTDPDataList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_GPRS_CSI_sequence[] = {
  { &hf_gsm_map_ms_gprs_CamelTDPDataList, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GPRS_CamelTDPDataList },
  { &hf_gsm_map_ms_camelCapabilityHandling, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CamelCapabilityHandling },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_csi_Active, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_GPRS_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_GPRS_CSI_sequence, hf_index, ett_gsm_map_ms_GPRS_CSI);

  return offset;
}


static const ber_sequence_t gsm_map_ms_MG_CSI_sequence[] = {
  { &hf_gsm_map_ms_mobilityTriggers, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_MobilityTriggers },
  { &hf_gsm_map_ms_serviceKey, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ServiceKey },
  { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_csi_Active, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_MG_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_MG_CSI_sequence, hf_index, ett_gsm_map_ms_MG_CSI);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SGSN_CAMEL_SubscriptionInfo_sequence[] = {
  { &hf_gsm_map_ms_gprs_CSI , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GPRS_CSI },
  { &hf_gsm_map_ms_mo_sms_CSI, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SMS_CSI },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_mt_sms_CSI, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SMS_CSI },
  { &hf_gsm_map_ms_mt_smsCAMELTDP_CriteriaList, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MT_smsCAMELTDP_CriteriaList },
  { &hf_gsm_map_ms_mg_csi   , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MG_CSI },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SGSN_CAMEL_SubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SGSN_CAMEL_SubscriptionInfo_sequence, hf_index, ett_gsm_map_ms_SGSN_CAMEL_SubscriptionInfo);

  return offset;
}


static const asn_namedbit gsm_map_ms_AccessRestrictionData_bits[] = {
  {  0, &hf_gsm_map_ms_AccessRestrictionData_utranNotAllowed, -1, -1, "utranNotAllowed", NULL },
  {  1, &hf_gsm_map_ms_AccessRestrictionData_geranNotAllowed, -1, -1, "geranNotAllowed", NULL },
  {  2, &hf_gsm_map_ms_AccessRestrictionData_ganNotAllowed, -1, -1, "ganNotAllowed", NULL },
  {  3, &hf_gsm_map_ms_AccessRestrictionData_i_hspa_evolutionNotAllowed, -1, -1, "i-hspa-evolutionNotAllowed", NULL },
  {  4, &hf_gsm_map_ms_AccessRestrictionData_e_utranNotAllowed, -1, -1, "e-utranNotAllowed", NULL },
  {  5, &hf_gsm_map_ms_AccessRestrictionData_ho_toNon3GPP_AccessNotAllowed, -1, -1, "ho-toNon3GPP-AccessNotAllowed", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_ms_AccessRestrictionData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_ms_AccessRestrictionData_bits, hf_index, ett_gsm_map_ms_AccessRestrictionData,
                                    NULL);

  return offset;
}



static int
dissect_gsm_map_ms_RFSP_ID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_map_ms_Bandwidth(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_AMBR_sequence[] = {
  { &hf_gsm_map_ms_max_RequestedBandwidth_UL, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Bandwidth },
  { &hf_gsm_map_ms_max_RequestedBandwidth_DL, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Bandwidth },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_AMBR(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_AMBR_sequence, hf_index, ett_gsm_map_ms_AMBR);

  return offset;
}



static int
dissect_gsm_map_ms_PDN_Type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_QoS_Class_Identifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_map_ms_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_Allocation_Retention_Priority_sequence[] = {
  { &hf_gsm_map_ms_priority_level, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_INTEGER },
  { &hf_gsm_map_ms_pre_emption_capability, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BOOLEAN },
  { &hf_gsm_map_ms_pre_emption_vulnerability, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BOOLEAN },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_Allocation_Retention_Priority(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_Allocation_Retention_Priority_sequence, hf_index, ett_gsm_map_ms_Allocation_Retention_Priority);

  return offset;
}


static const ber_sequence_t gsm_map_ms_EPS_QoS_Subscribed_sequence[] = {
  { &hf_gsm_map_ms_qos_Class_Identifier, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_QoS_Class_Identifier },
  { &hf_gsm_map_ms_allocation_Retention_Priority, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Allocation_Retention_Priority },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_EPS_QoS_Subscribed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_EPS_QoS_Subscribed_sequence, hf_index, ett_gsm_map_ms_EPS_QoS_Subscribed);

  return offset;
}


static const value_string gsm_map_ms_PDN_GW_AllocationType_vals[] = {
  {   0, "static" },
  {   1, "dynamic" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_PDN_GW_AllocationType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SpecificAPNInfo_sequence[] = {
  { &hf_gsm_map_ms_apn      , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN },
  { &hf_gsm_map_ms_pdn_gw_Identity, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDN_GW_Identity },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SpecificAPNInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SpecificAPNInfo_sequence, hf_index, ett_gsm_map_ms_SpecificAPNInfo);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SpecificAPNInfoList_sequence_of[1] = {
  { &hf_gsm_map_ms_SpecificAPNInfoList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_SpecificAPNInfo },
};

static int
dissect_gsm_map_ms_SpecificAPNInfoList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_SpecificAPNInfoList_sequence_of, hf_index, ett_gsm_map_ms_SpecificAPNInfoList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_APN_Configuration_sequence[] = {
  { &hf_gsm_map_ms_contextId, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ContextId },
  { &hf_gsm_map_ms_pdn_Type , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDN_Type },
  { &hf_gsm_map_ms_servedPartyIP_IPv4_Address, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Address },
  { &hf_gsm_map_ms_apn      , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN },
  { &hf_gsm_map_ms_eps_qos_Subscribed, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EPS_QoS_Subscribed },
  { &hf_gsm_map_ms_pdn_gw_Identity, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDN_GW_Identity },
  { &hf_gsm_map_ms_pdn_gw_AllocationType, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDN_GW_AllocationType },
  { &hf_gsm_map_ms_vplmnAddressAllowed, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_chargingCharacteristics, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChargingCharacteristics },
  { &hf_gsm_map_ms_ambr     , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AMBR },
  { &hf_gsm_map_ms_specificAPNInfoList, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SpecificAPNInfoList },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_servedPartyIP_IPv6_Address, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Address },
  { &hf_gsm_map_ms_apn_oi_Replacement, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN_OI_Replacement },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_APN_Configuration(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_APN_Configuration_sequence, hf_index, ett_gsm_map_ms_APN_Configuration);

  return offset;
}


static const ber_sequence_t gsm_map_ms_EPS_DataList_sequence_of[1] = {
  { &hf_gsm_map_ms_EPS_DataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_APN_Configuration },
};

static int
dissect_gsm_map_ms_EPS_DataList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_EPS_DataList_sequence_of, hf_index, ett_gsm_map_ms_EPS_DataList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_APN_ConfigurationProfile_sequence[] = {
  { &hf_gsm_map_ms_defaultContext, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ContextId },
  { &hf_gsm_map_ms_completeDataListIncluded, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_epsDataList, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EPS_DataList },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_APN_ConfigurationProfile(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_APN_ConfigurationProfile_sequence, hf_index, ett_gsm_map_ms_APN_ConfigurationProfile);

  return offset;
}


static const ber_sequence_t gsm_map_ms_EPS_SubscriptionData_sequence[] = {
  { &hf_gsm_map_ms_apn_oi_Replacement, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN_OI_Replacement },
  { &hf_gsm_map_ms_rfsp_id  , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RFSP_ID },
  { &hf_gsm_map_ms_ambr     , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AMBR },
  { &hf_gsm_map_ms_apn_ConfigurationProfile, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN_ConfigurationProfile },
  { &hf_gsm_map_ms_stn_sr   , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_EPS_SubscriptionData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_EPS_SubscriptionData_sequence, hf_index, ett_gsm_map_ms_EPS_SubscriptionData);

  return offset;
}



static int
dissect_gsm_map_ms_CSG_Id(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    NULL, hf_index, -1,
                                    NULL);

  return offset;
}



static int
dissect_gsm_map_ms_Time(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_CSG_SubscriptionData_sequence[] = {
  { &hf_gsm_map_ms_csg_Id   , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CSG_Id },
  { &hf_gsm_map_ms_expirationDate, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Time },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_CSG_SubscriptionData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_CSG_SubscriptionData_sequence, hf_index, ett_gsm_map_ms_CSG_SubscriptionData);

  return offset;
}


static const ber_sequence_t gsm_map_ms_CSG_SubscriptionDataList_sequence_of[1] = {
  { &hf_gsm_map_ms_CSG_SubscriptionDataList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CSG_SubscriptionData },
};

static int
dissect_gsm_map_ms_CSG_SubscriptionDataList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_CSG_SubscriptionDataList_sequence_of, hf_index, ett_gsm_map_ms_CSG_SubscriptionDataList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_InsertSubscriberDataArg_sequence[] = {
  { &hf_gsm_map_ms_imsi     , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ms_msisdn   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_category , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Category },
  { &hf_gsm_map_ms_subscriberStatus, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SubscriberStatus },
  { &hf_gsm_map_ms_bearerServiceList, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BearerServiceList },
  { &hf_gsm_map_ms_teleserviceList, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TeleserviceList },
  { &hf_gsm_map_ms_provisionedSS, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_SS_InfoList },
  { &hf_gsm_map_ms_odb_Data , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ODB_Data },
  { &hf_gsm_map_ms_roamingRestrictionDueToUnsupportedFeature, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_regionalSubscriptionData, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ZoneCodeList },
  { &hf_gsm_map_ms_vbsSubscriptionData, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_VBSDataList },
  { &hf_gsm_map_ms_vgcsSubscriptionData, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_VGCSDataList },
  { &hf_gsm_map_ms_vlrCamelSubscriptionInfo, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_VlrCamelSubscriptionInfo },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_naea_PreferredCI, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NAEA_PreferredCI },
  { &hf_gsm_map_ms_gprsSubscriptionData, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GPRSSubscriptionData },
  { &hf_gsm_map_ms_roamingRestrictedInSgsnDueToUnsupportedFeature, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_networkAccessMode, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NetworkAccessMode },
  { &hf_gsm_map_ms_lsaInformation, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LSAInformation },
  { &hf_gsm_map_ms_lmu_Indicator, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_lcsInformation, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LCSInformation },
  { &hf_gsm_map_ms_istAlertTimer, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_IST_AlertTimerValue },
  { &hf_gsm_map_ms_superChargerSupportedInHLR, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AgeIndicator },
  { &hf_gsm_map_ms_mc_SS_Info, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_MC_SS_Info },
  { &hf_gsm_map_ms_cs_AllocationRetentionPriority, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CS_AllocationRetentionPriority },
  { &hf_gsm_map_ms_sgsn_CAMEL_SubscriptionInfo, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SGSN_CAMEL_SubscriptionInfo },
  { &hf_gsm_map_ms_chargingCharacteristics, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChargingCharacteristics },
  { &hf_gsm_map_ms_accessRestrictionData, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AccessRestrictionData },
  { &hf_gsm_map_ms_ics_Indicator, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BOOLEAN },
  { &hf_gsm_map_ms_eps_SubscriptionData, BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_EPS_SubscriptionData },
  { &hf_gsm_map_ms_csg_SubscriptionDataList, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CSG_SubscriptionDataList },
  { &hf_gsm_map_ms_ue_ReachabilityRequestIndicator, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_sgsn_Number, BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_mme_Name , BER_CLASS_CON, 35, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_InsertSubscriberDataArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_InsertSubscriberDataArg_sequence, hf_index, ett_gsm_map_ms_InsertSubscriberDataArg);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SubscriberData_sequence[] = {
  { &hf_gsm_map_ms_msisdn   , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_category , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Category },
  { &hf_gsm_map_ms_subscriberStatus, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SubscriberStatus },
  { &hf_gsm_map_ms_bearerServiceList, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BearerServiceList },
  { &hf_gsm_map_ms_teleserviceList, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TeleserviceList },
  { &hf_gsm_map_ms_provisionedSS, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_SS_InfoList },
  { &hf_gsm_map_ms_odb_Data , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ODB_Data },
  { &hf_gsm_map_ms_roamingRestrictionDueToUnsupportedFeature, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_regionalSubscriptionData, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ZoneCodeList },
  { &hf_gsm_map_ms_vbsSubscriptionData, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_VBSDataList },
  { &hf_gsm_map_ms_vgcsSubscriptionData, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_VGCSDataList },
  { &hf_gsm_map_ms_vlrCamelSubscriptionInfo, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_VlrCamelSubscriptionInfo },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SubscriberData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SubscriberData_sequence, hf_index, ett_gsm_map_ms_SubscriberData);

  return offset;
}


static const value_string gsm_map_ms_RegionalSubscriptionResponse_vals[] = {
  {   0, "networkNode-AreaRestricted" },
  {   1, "tooManyZoneCodes" },
  {   2, "zoneCodesConflict" },
  {   3, "regionalSubscNotSupported" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_RegionalSubscriptionResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_InsertSubscriberDataRes_sequence[] = {
  { &hf_gsm_map_ms_teleserviceList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TeleserviceList },
  { &hf_gsm_map_ms_bearerServiceList, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BearerServiceList },
  { &hf_gsm_map_ms_ss_List  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_List },
  { &hf_gsm_map_ms_odb_GeneralData, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ODB_GeneralData },
  { &hf_gsm_map_ms_regionalSubscriptionResponse, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RegionalSubscriptionResponse },
  { &hf_gsm_map_ms_supportedCamelPhases, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCamelPhases },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_offeredCamel4CSIs, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OfferedCamel4CSIs },
  { &hf_gsm_map_ms_supportedFeatures, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedFeatures },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_InsertSubscriberDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_InsertSubscriberDataRes_sequence, hf_index, ett_gsm_map_ms_InsertSubscriberDataRes);

  return offset;
}


static const ber_sequence_t gsm_map_ms_BasicServiceList_sequence_of[1] = {
  { &hf_gsm_map_ms_BasicServiceList_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_BasicServiceCode },
};

static int
dissect_gsm_map_ms_BasicServiceList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_BasicServiceList_sequence_of, hf_index, ett_gsm_map_ms_BasicServiceList);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ContextIdList_sequence_of[1] = {
  { &hf_gsm_map_ms_ContextIdList_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ContextId },
};

static int
dissect_gsm_map_ms_ContextIdList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_ContextIdList_sequence_of, hf_index, ett_gsm_map_ms_ContextIdList);

  return offset;
}


static const value_string gsm_map_ms_GPRSSubscriptionDataWithdraw_vals[] = {
  {   0, "allGPRSData" },
  {   1, "contextIdList" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_ms_GPRSSubscriptionDataWithdraw_choice[] = {
  {   0, &hf_gsm_map_ms_allGPRSData, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL },
  {   1, &hf_gsm_map_ms_contextIdList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ContextIdList },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_GPRSSubscriptionDataWithdraw(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_ms_GPRSSubscriptionDataWithdraw_choice, hf_index, ett_gsm_map_ms_GPRSSubscriptionDataWithdraw,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_LSAIdentityList_sequence_of[1] = {
  { &hf_gsm_map_ms_LSAIdentityList_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_LSAIdentity },
};

static int
dissect_gsm_map_ms_LSAIdentityList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_LSAIdentityList_sequence_of, hf_index, ett_gsm_map_ms_LSAIdentityList);

  return offset;
}


static const value_string gsm_map_ms_LSAInformationWithdraw_vals[] = {
  {   0, "allLSAData" },
  {   1, "lsaIdentityList" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_ms_LSAInformationWithdraw_choice[] = {
  {   0, &hf_gsm_map_ms_allLSAData, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL },
  {   1, &hf_gsm_map_ms_lsaIdentityList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_LSAIdentityList },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_LSAInformationWithdraw(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_ms_LSAInformationWithdraw_choice, hf_index, ett_gsm_map_ms_LSAInformationWithdraw,
                                 NULL);

  return offset;
}


static const asn_namedbit gsm_map_ms_SpecificCSI_Withdraw_bits[] = {
  {  0, &hf_gsm_map_ms_SpecificCSI_Withdraw_o_csi, -1, -1, "o-csi", NULL },
  {  1, &hf_gsm_map_ms_SpecificCSI_Withdraw_ss_csi, -1, -1, "ss-csi", NULL },
  {  2, &hf_gsm_map_ms_SpecificCSI_Withdraw_tif_csi, -1, -1, "tif-csi", NULL },
  {  3, &hf_gsm_map_ms_SpecificCSI_Withdraw_d_csi, -1, -1, "d-csi", NULL },
  {  4, &hf_gsm_map_ms_SpecificCSI_Withdraw_vt_csi, -1, -1, "vt-csi", NULL },
  {  5, &hf_gsm_map_ms_SpecificCSI_Withdraw_mo_sms_csi, -1, -1, "mo-sms-csi", NULL },
  {  6, &hf_gsm_map_ms_SpecificCSI_Withdraw_m_csi, -1, -1, "m-csi", NULL },
  {  7, &hf_gsm_map_ms_SpecificCSI_Withdraw_gprs_csi, -1, -1, "gprs-csi", NULL },
  {  8, &hf_gsm_map_ms_SpecificCSI_Withdraw_t_csi, -1, -1, "t-csi", NULL },
  {  9, &hf_gsm_map_ms_SpecificCSI_Withdraw_mt_sms_csi, -1, -1, "mt-sms-csi", NULL },
  { 10, &hf_gsm_map_ms_SpecificCSI_Withdraw_mg_csi, -1, -1, "mg-csi", NULL },
  { 11, &hf_gsm_map_ms_SpecificCSI_Withdraw_o_IM_CSI, -1, -1, "o-IM-CSI", NULL },
  { 12, &hf_gsm_map_ms_SpecificCSI_Withdraw_d_IM_CSI, -1, -1, "d-IM-CSI", NULL },
  { 13, &hf_gsm_map_ms_SpecificCSI_Withdraw_vt_IM_CSI, -1, -1, "vt-IM-CSI", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_ms_SpecificCSI_Withdraw(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_ms_SpecificCSI_Withdraw_bits, hf_index, ett_gsm_map_ms_SpecificCSI_Withdraw,
                                    NULL);

  return offset;
}


static const value_string gsm_map_ms_EPS_SubscriptionDataWithdraw_vals[] = {
  {   0, "allEPS-Data" },
  {   1, "contextIdList" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_ms_EPS_SubscriptionDataWithdraw_choice[] = {
  {   0, &hf_gsm_map_ms_allEPS_Data, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL },
  {   1, &hf_gsm_map_ms_contextIdList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ContextIdList },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_EPS_SubscriptionDataWithdraw(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_ms_EPS_SubscriptionDataWithdraw_choice, hf_index, ett_gsm_map_ms_EPS_SubscriptionDataWithdraw,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_DeleteSubscriberDataArg_sequence[] = {
  { &hf_gsm_map_ms_imsi     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ms_basicServiceList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BasicServiceList },
  { &hf_gsm_map_ms_ss_List  , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_List },
  { &hf_gsm_map_ms_roamingRestrictionDueToUnsupportedFeature, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_regionalSubscriptionIdentifier, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ZoneCode },
  { &hf_gsm_map_ms_vbsGroupIndication, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_vgcsGroupIndication, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_camelSubscriptionInfoWithdraw, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_gprsSubscriptionDataWithdraw, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_GPRSSubscriptionDataWithdraw },
  { &hf_gsm_map_ms_roamingRestrictedInSgsnDueToUnsuppportedFeature, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_lsaInformationWithdraw, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_LSAInformationWithdraw },
  { &hf_gsm_map_ms_gmlc_ListWithdraw, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_istInformationWithdraw, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_specificCSI_Withdraw, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SpecificCSI_Withdraw },
  { &hf_gsm_map_ms_chargingCharacteristicsWithdraw, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_stn_srWithdraw, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_epsSubscriptionDataWithdraw, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_EPS_SubscriptionDataWithdraw },
  { &hf_gsm_map_ms_apn_oi_replacementWithdraw, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_csg_SubscriptionDeleted, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_DeleteSubscriberDataArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_DeleteSubscriberDataArg_sequence, hf_index, ett_gsm_map_ms_DeleteSubscriberDataArg);

  return offset;
}


static const ber_sequence_t gsm_map_ms_DeleteSubscriberDataRes_sequence[] = {
  { &hf_gsm_map_ms_regionalSubscriptionResponse, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RegionalSubscriptionResponse },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_DeleteSubscriberDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_DeleteSubscriberDataRes_sequence, hf_index, ett_gsm_map_ms_DeleteSubscriberDataRes);

  return offset;
}


static const asn_namedbit gsm_map_ms_OfferedCamel4Functionalities_bits[] = {
  {  0, &hf_gsm_map_ms_OfferedCamel4Functionalities_initiateCallAttempt, -1, -1, "initiateCallAttempt", NULL },
  {  1, &hf_gsm_map_ms_OfferedCamel4Functionalities_splitLeg, -1, -1, "splitLeg", NULL },
  {  2, &hf_gsm_map_ms_OfferedCamel4Functionalities_moveLeg, -1, -1, "moveLeg", NULL },
  {  3, &hf_gsm_map_ms_OfferedCamel4Functionalities_disconnectLeg, -1, -1, "disconnectLeg", NULL },
  {  4, &hf_gsm_map_ms_OfferedCamel4Functionalities_entityReleased, -1, -1, "entityReleased", NULL },
  {  5, &hf_gsm_map_ms_OfferedCamel4Functionalities_dfc_WithArgument, -1, -1, "dfc-WithArgument", NULL },
  {  6, &hf_gsm_map_ms_OfferedCamel4Functionalities_playTone, -1, -1, "playTone", NULL },
  {  7, &hf_gsm_map_ms_OfferedCamel4Functionalities_dtmf_MidCall, -1, -1, "dtmf-MidCall", NULL },
  {  8, &hf_gsm_map_ms_OfferedCamel4Functionalities_chargingIndicator, -1, -1, "chargingIndicator", NULL },
  {  9, &hf_gsm_map_ms_OfferedCamel4Functionalities_alertingDP, -1, -1, "alertingDP", NULL },
  { 10, &hf_gsm_map_ms_OfferedCamel4Functionalities_locationAtAlerting, -1, -1, "locationAtAlerting", NULL },
  { 11, &hf_gsm_map_ms_OfferedCamel4Functionalities_changeOfPositionDP, -1, -1, "changeOfPositionDP", NULL },
  { 12, &hf_gsm_map_ms_OfferedCamel4Functionalities_or_Interactions, -1, -1, "or-Interactions", NULL },
  { 13, &hf_gsm_map_ms_OfferedCamel4Functionalities_warningToneEnhancements, -1, -1, "warningToneEnhancements", NULL },
  { 14, &hf_gsm_map_ms_OfferedCamel4Functionalities_cf_Enhancements, -1, -1, "cf-Enhancements", NULL },
  { 15, &hf_gsm_map_ms_OfferedCamel4Functionalities_subscribedEnhancedDialledServices, -1, -1, "subscribedEnhancedDialledServices", NULL },
  { 16, &hf_gsm_map_ms_OfferedCamel4Functionalities_servingNetworkEnhancedDialledServices, -1, -1, "servingNetworkEnhancedDialledServices", NULL },
  { 17, &hf_gsm_map_ms_OfferedCamel4Functionalities_criteriaForChangeOfPositionDP, -1, -1, "criteriaForChangeOfPositionDP", NULL },
  { 18, &hf_gsm_map_ms_OfferedCamel4Functionalities_serviceChangeDP, -1, -1, "serviceChangeDP", NULL },
  { 19, &hf_gsm_map_ms_OfferedCamel4Functionalities_collectInformation, -1, -1, "collectInformation", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

int
dissect_gsm_map_ms_OfferedCamel4Functionalities(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_ms_OfferedCamel4Functionalities_bits, hf_index, ett_gsm_map_ms_OfferedCamel4Functionalities,
                                    NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SendRoutingInfoForGprsArg_sequence[] = {
  { &hf_gsm_map_ms_imsi     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ms_ggsn_Address, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_map_ms_ggsn_Number, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SendRoutingInfoForGprsArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SendRoutingInfoForGprsArg_sequence, hf_index, ett_gsm_map_ms_SendRoutingInfoForGprsArg);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SendRoutingInfoForGprsRes_sequence[] = {
  { &hf_gsm_map_ms_sgsn_Address, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_map_ms_ggsn_Address, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_map_ms_mobileNotReachableReason, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_er_AbsentSubscriberDiagnosticSM },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SendRoutingInfoForGprsRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SendRoutingInfoForGprsRes_sequence, hf_index, ett_gsm_map_ms_SendRoutingInfoForGprsRes);

  return offset;
}


static const ber_sequence_t gsm_map_ms_FailureReportArg_sequence[] = {
  { &hf_gsm_map_ms_imsi     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ms_ggsn_Number, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_ggsn_Address, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_FailureReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_FailureReportArg_sequence, hf_index, ett_gsm_map_ms_FailureReportArg);

  return offset;
}


static const ber_sequence_t gsm_map_ms_FailureReportRes_sequence[] = {
  { &hf_gsm_map_ms_ggsn_Address, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_FailureReportRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_FailureReportRes_sequence, hf_index, ett_gsm_map_ms_FailureReportRes);

  return offset;
}


static const ber_sequence_t gsm_map_ms_NoteMsPresentForGprsArg_sequence[] = {
  { &hf_gsm_map_ms_imsi     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ms_sgsn_Address, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_map_ms_ggsn_Address, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_NoteMsPresentForGprsArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_NoteMsPresentForGprsArg_sequence, hf_index, ett_gsm_map_ms_NoteMsPresentForGprsArg);

  return offset;
}


static const ber_sequence_t gsm_map_ms_NoteMsPresentForGprsRes_sequence[] = {
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_NoteMsPresentForGprsRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_NoteMsPresentForGprsRes_sequence, hf_index, ett_gsm_map_ms_NoteMsPresentForGprsRes);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ResetArg_sequence[] = {
  { &hf_gsm_map_ms_hlr_Number, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_hlr_List , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_HLR_List },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_ResetArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_ResetArg_sequence, hf_index, ett_gsm_map_ms_ResetArg);

  return offset;
}


static const ber_sequence_t gsm_map_ms_RestoreDataArg_sequence[] = {
  { &hf_gsm_map_ms_imsi     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ms_lmsi     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_LMSI },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_vlr_Capability, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_VLR_Capability },
  { &hf_gsm_map_ms_restorationIndicator, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_RestoreDataArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_RestoreDataArg_sequence, hf_index, ett_gsm_map_ms_RestoreDataArg);

  return offset;
}


static const ber_sequence_t gsm_map_ms_RestoreDataRes_sequence[] = {
  { &hf_gsm_map_ms_hlr_Number, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_msNotReachable, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_RestoreDataRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_RestoreDataRes_sequence, hf_index, ett_gsm_map_ms_RestoreDataRes);

  return offset;
}


static const value_string gsm_map_ms_DomainType_vals[] = {
  {   0, "cs-Domain" },
  {   1, "ps-Domain" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_DomainType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const asn_namedbit gsm_map_ms_RequestedNodes_bits[] = {
  {  0, &hf_gsm_map_ms_RequestedNodes_mme, -1, -1, "mme", NULL },
  {  1, &hf_gsm_map_ms_RequestedNodes_sgsn, -1, -1, "sgsn", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_ms_RequestedNodes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_ms_RequestedNodes_bits, hf_index, ett_gsm_map_ms_RequestedNodes,
                                    NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_RequestedInfo_sequence[] = {
  { &hf_gsm_map_ms_locationInformation_01, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_subscriberState_01, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_currentLocation, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_requestedDomain, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DomainType },
  { &hf_gsm_map_ms_imei_01  , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_ms_classmark, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_mnpRequestedInfo, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_t_adsData, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_requestedNodes, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RequestedNodes },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_RequestedInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_RequestedInfo_sequence, hf_index, ett_gsm_map_ms_RequestedInfo);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ProvideSubscriberInfoArg_sequence[] = {
  { &hf_gsm_map_ms_imsi     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ms_lmsi     , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI },
  { &hf_gsm_map_ms_requestedInfo, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RequestedInfo },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_callPriority, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_EMLPP_Priority },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_ProvideSubscriberInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_ProvideSubscriberInfoArg_sequence, hf_index, ett_gsm_map_ms_ProvideSubscriberInfoArg);

  return offset;
}



int
dissect_gsm_map_ms_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_LocationNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_GeodeticInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_OCTET_STRING_SIZE_7(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_OCTET_STRING_SIZE_5(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_LocationInformationEPS_sequence[] = {
  { &hf_gsm_map_ms_e_utranCellGlobalIdentity, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OCTET_STRING_SIZE_7 },
  { &hf_gsm_map_ms_trackingAreaIdentity, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OCTET_STRING_SIZE_5 },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_geographicalInformation, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeographicalInformation },
  { &hf_gsm_map_ms_geodeticInformation, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeodeticInformation },
  { &hf_gsm_map_ms_currentLocationRetrieved, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_ageOfLocationInformation, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AgeOfLocationInformation },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_LocationInformationEPS(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_LocationInformationEPS_sequence, hf_index, ett_gsm_map_ms_LocationInformationEPS);

  return offset;
}



static int
dissect_gsm_map_ms_OCTET_STRING_SIZE_1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_UserCSGInformation_sequence[] = {
  { &hf_gsm_map_ms_csg_Id   , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CSG_Id },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_accessMode, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OCTET_STRING_SIZE_1 },
  { &hf_gsm_map_ms_cmi      , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OCTET_STRING_SIZE_1 },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_UserCSGInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_UserCSGInformation_sequence, hf_index, ett_gsm_map_ms_UserCSGInformation);

  return offset;
}


static const ber_sequence_t gsm_map_ms_LocationInformation_sequence[] = {
  { &hf_gsm_map_ms_ageOfLocationInformation, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_AgeOfLocationInformation },
  { &hf_gsm_map_ms_geographicalInformation, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeographicalInformation },
  { &hf_gsm_map_ms_vlr_number, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_locationNumber, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationNumber },
  { &hf_gsm_map_ms_cellGlobalIdOrServiceAreaIdOrLAI, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_selectedLSA_Id, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LSAIdentity },
  { &hf_gsm_map_ms_msc_Number, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_geodeticInformation, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeodeticInformation },
  { &hf_gsm_map_ms_currentLocationRetrieved, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_sai_Present, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_locationInformationEPS, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformationEPS },
  { &hf_gsm_map_ms_userCSGInformation, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UserCSGInformation },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ms_LocationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_LocationInformation_sequence, hf_index, ett_gsm_map_ms_LocationInformation);

  return offset;
}


static const value_string gsm_map_ms_NotReachableReason_vals[] = {
  {   0, "msPurged" },
  {   1, "imsiDetached" },
  {   2, "restrictedArea" },
  {   3, "notRegistered" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_NotReachableReason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


const value_string gsm_map_ms_SubscriberState_vals[] = {
  {   0, "assumedIdle" },
  {   1, "camelBusy" },
  {   2, "netDetNotReachable" },
  {   3, "notProvidedFromVLR" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_ms_SubscriberState_choice[] = {
  {   0, &hf_gsm_map_ms_assumedIdle, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  {   1, &hf_gsm_map_ms_camelBusy, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  {   2, &hf_gsm_map_ms_netDetNotReachable, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NotReachableReason },
  {   3, &hf_gsm_map_ms_notProvidedFromVLR, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { 0, NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ms_SubscriberState(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_ms_SubscriberState_choice, hf_index, ett_gsm_map_ms_SubscriberState,
                                 NULL);

  return offset;
}



int
dissect_gsm_map_ms_RAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 565 "../../asn1/gsm_map/gsm_map.cnf"

	tvbuff_t	*parameter_tvb;
	proto_tree *subtree;

  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);


	 if (!parameter_tvb)
		return offset;
	subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_RAIdentity);
	de_gmm_rai(parameter_tvb, subtree, actx->pinfo, 0, 3, NULL,0);



  return offset;
}


static const ber_sequence_t gsm_map_ms_LocationInformationGPRS_sequence[] = {
  { &hf_gsm_map_ms_cellGlobalIdOrServiceAreaIdOrLAI, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI },
  { &hf_gsm_map_ms_routeingAreaIdentity, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RAIdentity },
  { &hf_gsm_map_ms_geographicalInformation, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeographicalInformation },
  { &hf_gsm_map_ms_sgsn_Number, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_selectedLSAIdentity, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LSAIdentity },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_sai_Present, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_geodeticInformation, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GeodeticInformation },
  { &hf_gsm_map_ms_currentLocationRetrieved, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_ageOfLocationInformation, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AgeOfLocationInformation },
  { &hf_gsm_map_ms_userCSGInformation, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_UserCSGInformation },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_LocationInformationGPRS(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_LocationInformationGPRS_sequence, hf_index, ett_gsm_map_ms_LocationInformationGPRS);

  return offset;
}



static int
dissect_gsm_map_ms_NSAPI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_map_ms_TransactionId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_TEID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



int
dissect_gsm_map_ms_GPRSChargingID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_PDP_ContextInfo_sequence[] = {
  { &hf_gsm_map_ms_pdp_ContextIdentifier, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ContextId },
  { &hf_gsm_map_ms_pdp_ContextActive, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_pdp_Type , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Type },
  { &hf_gsm_map_ms_pdp_Address, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Address },
  { &hf_gsm_map_ms_apn_Subscribed, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN },
  { &hf_gsm_map_ms_apn_InUse, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN },
  { &hf_gsm_map_ms_nsapi    , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NSAPI },
  { &hf_gsm_map_ms_transactionId, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TransactionId },
  { &hf_gsm_map_ms_teid_ForGnAndGp, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TEID },
  { &hf_gsm_map_ms_teid_ForIu, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_TEID },
  { &hf_gsm_map_ms_ggsn_Address, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_map_ms_qos_Subscribed_01, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_QoS_Subscribed },
  { &hf_gsm_map_ms_qos_Requested, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_QoS_Subscribed },
  { &hf_gsm_map_ms_qos_Negotiated, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_QoS_Subscribed },
  { &hf_gsm_map_ms_chargingId, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GPRSChargingID },
  { &hf_gsm_map_ms_chargingCharacteristics, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ChargingCharacteristics },
  { &hf_gsm_map_ms_rnc_Address, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_qos2_Subscribed, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext2_QoS_Subscribed },
  { &hf_gsm_map_ms_qos2_Requested, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext2_QoS_Subscribed },
  { &hf_gsm_map_ms_qos2_Negotiated, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext2_QoS_Subscribed },
  { &hf_gsm_map_ms_qos3_Subscribed, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext3_QoS_Subscribed },
  { &hf_gsm_map_ms_qos3_Requested, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext3_QoS_Subscribed },
  { &hf_gsm_map_ms_qos3_Negotiated, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext3_QoS_Subscribed },
  { &hf_gsm_map_ms_qos4_Subscribed, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext4_QoS_Subscribed },
  { &hf_gsm_map_ms_qos4_Requested, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext4_QoS_Subscribed },
  { &hf_gsm_map_ms_qos4_Negotiated, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext4_QoS_Subscribed },
  { &hf_gsm_map_ms_ext_pdp_Type, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_PDP_Type },
  { &hf_gsm_map_ms_ext_pdp_Address, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_Address },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_PDP_ContextInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_PDP_ContextInfo_sequence, hf_index, ett_gsm_map_ms_PDP_ContextInfo);

  return offset;
}


static const ber_sequence_t gsm_map_ms_PDP_ContextInfoList_sequence_of[1] = {
  { &hf_gsm_map_ms_PDP_ContextInfoList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_PDP_ContextInfo },
};

static int
dissect_gsm_map_ms_PDP_ContextInfoList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_PDP_ContextInfoList_sequence_of, hf_index, ett_gsm_map_ms_PDP_ContextInfoList);

  return offset;
}


static const value_string gsm_map_ms_PS_SubscriberState_vals[] = {
  {   0, "notProvidedFromSGSNorMME" },
  {   1, "ps-Detached" },
  {   2, "ps-AttachedNotReachableForPaging" },
  {   3, "ps-AttachedReachableForPaging" },
  {   4, "ps-PDP-ActiveNotReachableForPaging" },
  {   5, "ps-PDP-ActiveReachableForPaging" },
  {   6, "netDetNotReachable" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_ms_PS_SubscriberState_choice[] = {
  {   0, &hf_gsm_map_ms_notProvidedFromSGSNorMME, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  {   1, &hf_gsm_map_ms_ps_Detached, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  {   2, &hf_gsm_map_ms_ps_AttachedNotReachableForPaging, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  {   3, &hf_gsm_map_ms_ps_AttachedReachableForPaging, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  {   4, &hf_gsm_map_ms_ps_PDP_ActiveNotReachableForPaging, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_ContextInfoList },
  {   5, &hf_gsm_map_ms_ps_PDP_ActiveReachableForPaging, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PDP_ContextInfoList },
  {   6, &hf_gsm_map_ms_netDetNotReachable, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NotReachableReason },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_PS_SubscriberState(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_ms_PS_SubscriberState_choice, hf_index, ett_gsm_map_ms_PS_SubscriberState,
                                 NULL);

  return offset;
}



int
dissect_gsm_map_ms_MS_Classmark2(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_MSNetworkCapability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ms_MSRadioAccessCapability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_GPRSMSClass_sequence[] = {
  { &hf_gsm_map_ms_mSNetworkCapability, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MSNetworkCapability },
  { &hf_gsm_map_ms_mSRadioAccessCapability, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MSRadioAccessCapability },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ms_GPRSMSClass(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_GPRSMSClass_sequence, hf_index, ett_gsm_map_ms_GPRSMSClass);

  return offset;
}



static int
dissect_gsm_map_ms_RouteingNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_gsm_map_TBCD_STRING(implicit_tag, tvb, offset, actx, tree, hf_index);

  return offset;
}


static const value_string gsm_map_ms_NumberPortabilityStatus_vals[] = {
  {   0, "notKnownToBePorted" },
  {   1, "ownNumberPortedOut" },
  {   2, "foreignNumberPortedToForeignNetwork" },
  {   4, "ownNumberNotPortedOut" },
  {   5, "foreignNumberPortedIn" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_NumberPortabilityStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_MNPInfoRes_sequence[] = {
  { &hf_gsm_map_ms_routeingNumber, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RouteingNumber },
  { &hf_gsm_map_ms_imsi     , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ms_msisdn   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_numberPortabilityStatus, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NumberPortabilityStatus },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_MNPInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_MNPInfoRes_sequence, hf_index, ett_gsm_map_ms_MNPInfoRes);

  return offset;
}


static const value_string gsm_map_ms_IMS_VoiceOverPS_SessionsInd_vals[] = {
  {   0, "imsVoiceOverPS-SessionsNotSupported" },
  {   1, "imsVoiceOverPS-SessionsSupported" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_IMS_VoiceOverPS_SessionsInd(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_SubscriberInfo_sequence[] = {
  { &hf_gsm_map_ms_locationInformation, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformation },
  { &hf_gsm_map_ms_subscriberState, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_SubscriberState },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_locationInformationGPRS, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformationGPRS },
  { &hf_gsm_map_ms_ps_SubscriberState, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_PS_SubscriberState },
  { &hf_gsm_map_ms_imei     , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
  { &hf_gsm_map_ms_ms_Classmark2, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MS_Classmark2 },
  { &hf_gsm_map_ms_gprs_MS_Class, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GPRSMSClass },
  { &hf_gsm_map_ms_mnpInfoRes, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MNPInfoRes },
  { &hf_gsm_map_ms_imsVoiceOverPS_SessionsIndication, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_IMS_VoiceOverPS_SessionsInd },
  { &hf_gsm_map_ms_lastUE_ActivityTime, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Time },
  { &hf_gsm_map_ms_lastRAT_Type, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Used_RAT_Type },
  { &hf_gsm_map_ms_eps_SubscriberState, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_PS_SubscriberState },
  { &hf_gsm_map_ms_locationInformationEPS, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformationEPS },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_SubscriberInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_SubscriberInfo_sequence, hf_index, ett_gsm_map_ms_SubscriberInfo);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ProvideSubscriberInfoRes_sequence[] = {
  { &hf_gsm_map_ms_subscriberInfo, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_SubscriberInfo },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_ProvideSubscriberInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_ProvideSubscriberInfoRes_sequence, hf_index, ett_gsm_map_ms_ProvideSubscriberInfoRes);

  return offset;
}


static const ber_sequence_t gsm_map_ms_AnyTimeInterrogationArg_sequence[] = {
  { &hf_gsm_map_ms_subscriberIdentity, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SubscriberIdentity },
  { &hf_gsm_map_ms_requestedInfo, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RequestedInfo },
  { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_AnyTimeInterrogationArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_AnyTimeInterrogationArg_sequence, hf_index, ett_gsm_map_ms_AnyTimeInterrogationArg);

  return offset;
}


static const ber_sequence_t gsm_map_ms_AnyTimeInterrogationRes_sequence[] = {
  { &hf_gsm_map_ms_subscriberInfo, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_SubscriberInfo },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_AnyTimeInterrogationRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_AnyTimeInterrogationRes_sequence, hf_index, ett_gsm_map_ms_AnyTimeInterrogationRes);

  return offset;
}


static const value_string gsm_map_ms_RequestedCAMEL_SubscriptionInfo_vals[] = {
  {   0, "o-CSI" },
  {   1, "t-CSI" },
  {   2, "vt-CSI" },
  {   3, "tif-CSI" },
  {   4, "gprs-CSI" },
  {   5, "mo-sms-CSI" },
  {   6, "ss-CSI" },
  {   7, "m-CSI" },
  {   8, "d-csi" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_RequestedCAMEL_SubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const value_string gsm_map_ms_AdditionalRequestedCAMEL_SubscriptionInfo_vals[] = {
  {   0, "mt-sms-CSI" },
  {   1, "mg-csi" },
  {   2, "o-IM-CSI" },
  {   3, "d-IM-CSI" },
  {   4, "vt-IM-CSI" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_AdditionalRequestedCAMEL_SubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_RequestedSubscriptionInfo_sequence[] = {
  { &hf_gsm_map_ms_requestedSS_Info, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_ForBS_Code },
  { &hf_gsm_map_ms_odb      , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_requestedCAMEL_SubscriptionInfo, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RequestedCAMEL_SubscriptionInfo },
  { &hf_gsm_map_ms_supportedVLR_CAMEL_Phases_01, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_supportedSGSN_CAMEL_Phases_01, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_additionalRequestedCAMEL_SubscriptionInfo, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdditionalRequestedCAMEL_SubscriptionInfo },
  { &hf_gsm_map_ms_msisdn_BS_List_01, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_csg_SubscriptionDataRequested, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_RequestedSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_RequestedSubscriptionInfo_sequence, hf_index, ett_gsm_map_ms_RequestedSubscriptionInfo);

  return offset;
}


static const ber_sequence_t gsm_map_ms_AnyTimeSubscriptionInterrogationArg_sequence[] = {
  { &hf_gsm_map_ms_subscriberIdentity, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SubscriberIdentity },
  { &hf_gsm_map_ms_requestedSubscriptionInfo, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RequestedSubscriptionInfo },
  { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_longFTN_Supported, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_AnyTimeSubscriptionInterrogationArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_AnyTimeSubscriptionInterrogationArg_sequence, hf_index, ett_gsm_map_ms_AnyTimeSubscriptionInterrogationArg);

  return offset;
}


static const ber_sequence_t gsm_map_ms_CallForwardingData_sequence[] = {
  { &hf_gsm_map_ms_forwardingFeatureList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Ext_ForwFeatureList },
  { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_CallForwardingData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_CallForwardingData_sequence, hf_index, ett_gsm_map_ms_CallForwardingData);

  return offset;
}



static int
dissect_gsm_map_ms_WrongPasswordAttemptsCounter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_CallBarringData_sequence[] = {
  { &hf_gsm_map_ms_callBarringFeatureList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Ext_CallBarFeatureList },
  { &hf_gsm_map_ms_password , BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ss_Password },
  { &hf_gsm_map_ms_wrongPasswordAttemptsCounter, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_WrongPasswordAttemptsCounter },
  { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_CallBarringData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_CallBarringData_sequence, hf_index, ett_gsm_map_ms_CallBarringData);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ODB_Info_sequence[] = {
  { &hf_gsm_map_ms_odb_Data , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ODB_Data },
  { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_ODB_Info(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_ODB_Info_sequence, hf_index, ett_gsm_map_ms_ODB_Info);

  return offset;
}


static const ber_sequence_t gsm_map_ms_CAMEL_SubscriptionInfo_sequence[] = {
  { &hf_gsm_map_ms_o_CSI    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_CSI },
  { &hf_gsm_map_ms_o_BcsmCamelTDP_CriteriaList, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_BcsmCamelTDPCriteriaList },
  { &hf_gsm_map_ms_d_CSI    , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_D_CSI },
  { &hf_gsm_map_ms_t_CSI    , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_CSI },
  { &hf_gsm_map_ms_t_BCSM_CAMEL_TDP_CriteriaList, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList },
  { &hf_gsm_map_ms_vt_CSI   , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_CSI },
  { &hf_gsm_map_ms_vt_BCSM_CAMEL_TDP_CriteriaList, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList },
  { &hf_gsm_map_ms_tif_CSI  , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_tif_CSI_NotificationToCSE, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_gprs_CSI , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_GPRS_CSI },
  { &hf_gsm_map_ms_mo_sms_CSI, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SMS_CSI },
  { &hf_gsm_map_ms_ss_CSI   , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SS_CSI },
  { &hf_gsm_map_ms_m_CSI    , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_M_CSI },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_specificCSIDeletedList, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SpecificCSI_Withdraw },
  { &hf_gsm_map_ms_mt_sms_CSI, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SMS_CSI },
  { &hf_gsm_map_ms_mt_smsCAMELTDP_CriteriaList, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MT_smsCAMELTDP_CriteriaList },
  { &hf_gsm_map_ms_mg_csi   , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MG_CSI },
  { &hf_gsm_map_ms_o_IM_CSI , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_CSI },
  { &hf_gsm_map_ms_o_IM_BcsmCamelTDP_CriteriaList, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_BcsmCamelTDPCriteriaList },
  { &hf_gsm_map_ms_d_IM_CSI , BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_D_CSI },
  { &hf_gsm_map_ms_vt_IM_CSI, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_CSI },
  { &hf_gsm_map_ms_vt_IM_BCSM_CAMEL_TDP_CriteriaList, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_CAMEL_SubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_CAMEL_SubscriptionInfo_sequence, hf_index, ett_gsm_map_ms_CAMEL_SubscriptionInfo);

  return offset;
}


static const ber_sequence_t gsm_map_ms_MSISDN_BS_sequence[] = {
  { &hf_gsm_map_ms_msisdn   , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_basicServiceList, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_BasicServiceList },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_MSISDN_BS(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_MSISDN_BS_sequence, hf_index, ett_gsm_map_ms_MSISDN_BS);

  return offset;
}


static const ber_sequence_t gsm_map_ms_MSISDN_BS_List_sequence_of[1] = {
  { &hf_gsm_map_ms_MSISDN_BS_List_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_MSISDN_BS },
};

static int
dissect_gsm_map_ms_MSISDN_BS_List(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_ms_MSISDN_BS_List_sequence_of, hf_index, ett_gsm_map_ms_MSISDN_BS_List);

  return offset;
}


static const ber_sequence_t gsm_map_ms_AnyTimeSubscriptionInterrogationRes_sequence[] = {
  { &hf_gsm_map_ms_callForwardingData, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CallForwardingData },
  { &hf_gsm_map_ms_callBarringData, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CallBarringData },
  { &hf_gsm_map_ms_odb_Info , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ODB_Info },
  { &hf_gsm_map_ms_camel_SubscriptionInfo, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CAMEL_SubscriptionInfo },
  { &hf_gsm_map_ms_supportedVLR_CAMEL_Phases, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCamelPhases },
  { &hf_gsm_map_ms_supportedSGSN_CAMEL_Phases, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCamelPhases },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_offeredCamel4CSIsInVLR, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OfferedCamel4CSIs },
  { &hf_gsm_map_ms_offeredCamel4CSIsInSGSN, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OfferedCamel4CSIs },
  { &hf_gsm_map_ms_msisdn_BS_List, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MSISDN_BS_List },
  { &hf_gsm_map_ms_csg_SubscriptionDataList, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CSG_SubscriptionDataList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_AnyTimeSubscriptionInterrogationRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_AnyTimeSubscriptionInterrogationRes_sequence, hf_index, ett_gsm_map_ms_AnyTimeSubscriptionInterrogationRes);

  return offset;
}


static const value_string gsm_map_ms_ModificationInstruction_vals[] = {
  {   0, "deactivate" },
  {   1, "activate" },
  { 0, NULL }
};


static int
dissect_gsm_map_ms_ModificationInstruction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ModificationRequestFor_CF_Info_sequence[] = {
  { &hf_gsm_map_ms_ss_Code  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ms_basicService, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BasicServiceCode },
  { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status },
  { &hf_gsm_map_ms_forwardedToNumber_01, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
  { &hf_gsm_map_ms_forwardedToSubaddress, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_SubaddressString },
  { &hf_gsm_map_ms_noReplyConditionTime, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_NoRepCondTime },
  { &hf_gsm_map_ms_modifyNotificationToCSE, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_ModificationRequestFor_CF_Info(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_ModificationRequestFor_CF_Info_sequence, hf_index, ett_gsm_map_ms_ModificationRequestFor_CF_Info);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ModificationRequestFor_CB_Info_sequence[] = {
  { &hf_gsm_map_ms_ss_Code  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ms_basicService, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BasicServiceCode },
  { &hf_gsm_map_ms_ss_Status, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_SS_Status },
  { &hf_gsm_map_ms_password , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_Password },
  { &hf_gsm_map_ms_wrongPasswordAttemptsCounter, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_WrongPasswordAttemptsCounter },
  { &hf_gsm_map_ms_modifyNotificationToCSE, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_ModificationRequestFor_CB_Info(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_ModificationRequestFor_CB_Info_sequence, hf_index, ett_gsm_map_ms_ModificationRequestFor_CB_Info);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ModificationRequestFor_CSI_sequence[] = {
  { &hf_gsm_map_ms_requestedCamel_SubscriptionInfo, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_RequestedCAMEL_SubscriptionInfo },
  { &hf_gsm_map_ms_modifyNotificationToCSE, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction },
  { &hf_gsm_map_ms_modifyCSI_State, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_additionalRequestedCAMEL_SubscriptionInfo, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdditionalRequestedCAMEL_SubscriptionInfo },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_ModificationRequestFor_CSI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_ModificationRequestFor_CSI_sequence, hf_index, ett_gsm_map_ms_ModificationRequestFor_CSI);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ModificationRequestFor_ODB_data_sequence[] = {
  { &hf_gsm_map_ms_odb_data , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ODB_Data },
  { &hf_gsm_map_ms_modifyNotificationToCSE, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_ModificationRequestFor_ODB_data(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_ModificationRequestFor_ODB_data_sequence, hf_index, ett_gsm_map_ms_ModificationRequestFor_ODB_data);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ModificationRequestFor_IP_SM_GW_Data_sequence[] = {
  { &hf_gsm_map_ms_modifyRegistrationStatus, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_ModificationRequestFor_IP_SM_GW_Data(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_ModificationRequestFor_IP_SM_GW_Data_sequence, hf_index, ett_gsm_map_ms_ModificationRequestFor_IP_SM_GW_Data);

  return offset;
}


static const asn_namedbit gsm_map_ms_ServingNode_bits[] = {
  {  0, &hf_gsm_map_ms_ServingNode_mme, -1, -1, "mme", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_ms_ServingNode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_ms_ServingNode_bits, hf_index, ett_gsm_map_ms_ServingNode,
                                    NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_ModificationRequestFor_CSG_sequence[] = {
  { &hf_gsm_map_ms_modifyNotificationToCSE, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationInstruction },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_ModificationRequestFor_CSG(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_ModificationRequestFor_CSG_sequence, hf_index, ett_gsm_map_ms_ModificationRequestFor_CSG);

  return offset;
}


static const ber_sequence_t gsm_map_ms_AnyTimeModificationArg_sequence[] = {
  { &hf_gsm_map_ms_subscriberIdentity, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SubscriberIdentity },
  { &hf_gsm_map_ms_gsmSCF_Address, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_modificationRequestFor_CF_Info, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationRequestFor_CF_Info },
  { &hf_gsm_map_ms_modificationRequestFor_CB_Info, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationRequestFor_CB_Info },
  { &hf_gsm_map_ms_modificationRequestFor_CSI, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationRequestFor_CSI },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_longFTN_Supported, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_modificationRequestFor_ODB_data, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationRequestFor_ODB_data },
  { &hf_gsm_map_ms_modificationRequestFor_IP_SM_GW_Data, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationRequestFor_IP_SM_GW_Data },
  { &hf_gsm_map_ms_activationRequestForUE_reachability, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ServingNode },
  { &hf_gsm_map_ms_modificationRequestFor_CSG, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ModificationRequestFor_CSG },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_AnyTimeModificationArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_AnyTimeModificationArg_sequence, hf_index, ett_gsm_map_ms_AnyTimeModificationArg);

  return offset;
}


static const ber_sequence_t gsm_map_ms_Ext_ForwardingInfoFor_CSE_sequence[] = {
  { &hf_gsm_map_ms_ss_Code  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ms_forwardingFeatureList, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_ForwFeatureList },
  { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_Ext_ForwardingInfoFor_CSE(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_Ext_ForwardingInfoFor_CSE_sequence, hf_index, ett_gsm_map_ms_Ext_ForwardingInfoFor_CSE);

  return offset;
}


static const ber_sequence_t gsm_map_ms_Ext_CallBarringInfoFor_CSE_sequence[] = {
  { &hf_gsm_map_ms_ss_Code  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_map_ms_callBarringFeatureList, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_CallBarFeatureList },
  { &hf_gsm_map_ms_password , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_Password },
  { &hf_gsm_map_ms_wrongPasswordAttemptsCounter, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_WrongPasswordAttemptsCounter },
  { &hf_gsm_map_ms_notificationToCSE, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_Ext_CallBarringInfoFor_CSE(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_Ext_CallBarringInfoFor_CSE_sequence, hf_index, ett_gsm_map_ms_Ext_CallBarringInfoFor_CSE);

  return offset;
}


static const value_string gsm_map_ms_Ext_SS_InfoFor_CSE_vals[] = {
  {   0, "forwardingInfoFor-CSE" },
  {   1, "callBarringInfoFor-CSE" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_ms_Ext_SS_InfoFor_CSE_choice[] = {
  {   0, &hf_gsm_map_ms_forwardingInfoFor_CSE, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_ForwardingInfoFor_CSE },
  {   1, &hf_gsm_map_ms_callBarringInfoFor_CSE, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_CallBarringInfoFor_CSE },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_Ext_SS_InfoFor_CSE(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_ms_Ext_SS_InfoFor_CSE_choice, hf_index, ett_gsm_map_ms_Ext_SS_InfoFor_CSE,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ms_AnyTimeModificationRes_sequence[] = {
  { &hf_gsm_map_ms_ss_InfoFor_CSE, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ms_Ext_SS_InfoFor_CSE },
  { &hf_gsm_map_ms_camel_SubscriptionInfo, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CAMEL_SubscriptionInfo },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_odb_Info , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ODB_Info },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_AnyTimeModificationRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_AnyTimeModificationRes_sequence, hf_index, ett_gsm_map_ms_AnyTimeModificationRes);

  return offset;
}


static const ber_sequence_t gsm_map_ms_NoteSubscriberDataModifiedArg_sequence[] = {
  { &hf_gsm_map_ms_imsi     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ms_msisdn   , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_forwardingInfoFor_CSE, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_ForwardingInfoFor_CSE },
  { &hf_gsm_map_ms_callBarringInfoFor_CSE, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Ext_CallBarringInfoFor_CSE },
  { &hf_gsm_map_ms_odb_Info , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ODB_Info },
  { &hf_gsm_map_ms_camel_SubscriptionInfo, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CAMEL_SubscriptionInfo },
  { &hf_gsm_map_ms_allInformationSent, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NULL },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_ue_reachable, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ServingNode },
  { &hf_gsm_map_ms_csg_SubscriptionDataList, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CSG_SubscriptionDataList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_NoteSubscriberDataModifiedArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_NoteSubscriberDataModifiedArg_sequence, hf_index, ett_gsm_map_ms_NoteSubscriberDataModifiedArg);

  return offset;
}


static const ber_sequence_t gsm_map_ms_NoteSubscriberDataModifiedRes_sequence[] = {
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_NoteSubscriberDataModifiedRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_NoteSubscriberDataModifiedRes_sequence, hf_index, ett_gsm_map_ms_NoteSubscriberDataModifiedRes);

  return offset;
}


static const ber_sequence_t gsm_map_ms_NoteMM_EventArg_sequence[] = {
  { &hf_gsm_map_ms_serviceKey, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_ServiceKey },
  { &hf_gsm_map_ms_eventMet , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_MM_Code },
  { &hf_gsm_map_ms_imsi     , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ms_msisdn   , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ms_locationInformation, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformation },
  { &hf_gsm_map_ms_supportedCAMELPhases, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCamelPhases },
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ms_locationInformationGPRS, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_LocationInformationGPRS },
  { &hf_gsm_map_ms_offeredCamel4Functionalities, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OfferedCamel4Functionalities },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_NoteMM_EventArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_NoteMM_EventArg_sequence, hf_index, ett_gsm_map_ms_NoteMM_EventArg);

  return offset;
}


static const ber_sequence_t gsm_map_ms_NoteMM_EventRes_sequence[] = {
  { &hf_gsm_map_ms_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ms_NoteMM_EventRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ms_NoteMM_EventRes_sequence, hf_index, ett_gsm_map_ms_NoteMM_EventRes);

  return offset;
}


/* --- Module MAP-CH-DataTypes --- --- ---                                    */



static int
dissect_gsm_map_ch_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);

  return offset;
}


static const ber_sequence_t gsm_map_ch_CUG_CheckInfo_sequence[] = {
  { &hf_gsm_map_ch_cug_Interlock, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_CUG_Interlock },
  { &hf_gsm_map_ch_cug_OutgoingAccess, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ch_CUG_CheckInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_CUG_CheckInfo_sequence, hf_index, ett_gsm_map_ch_CUG_CheckInfo);

  return offset;
}



static int
dissect_gsm_map_ch_NumberOfForwarding(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const value_string gsm_map_ch_InterrogationType_vals[] = {
  {   0, "basicCall" },
  {   1, "forwarding" },
  { 0, NULL }
};


static int
dissect_gsm_map_ch_InterrogationType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}



static int
dissect_gsm_map_ch_OR_Phase(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



int
dissect_gsm_map_ch_CallReferenceNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const value_string gsm_map_ch_ForwardingReason_vals[] = {
  {   0, "notReachable" },
  {   1, "busy" },
  {   2, "noReply" },
  { 0, NULL }
};


static int
dissect_gsm_map_ch_ForwardingReason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ch_CamelInfo_sequence[] = {
  { &hf_gsm_map_ch_supportedCamelPhases, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_SupportedCamelPhases },
  { &hf_gsm_map_ch_suppress_T_CSI, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ch_offeredCamel4CSIs, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OfferedCamel4CSIs },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_CamelInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_CamelInfo_sequence, hf_index, ett_gsm_map_ch_CamelInfo);

  return offset;
}



int
dissect_gsm_map_ch_SuppressionOfAnnouncement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);

  return offset;
}



static int
dissect_gsm_map_ch_SupportedCCBS_Phase(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_map_ch_CallDiversionTreatmentIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const asn_namedbit gsm_map_ch_SuppressMTSS_bits[] = {
  {  0, &hf_gsm_map_ch_SuppressMTSS_suppressCUG, -1, -1, "suppressCUG", NULL },
  {  1, &hf_gsm_map_ch_SuppressMTSS_suppressCCBS, -1, -1, "suppressCCBS", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_ch_SuppressMTSS(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_ch_SuppressMTSS_bits, hf_index, ett_gsm_map_ch_SuppressMTSS,
                                    NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ch_SendRoutingInfoArg_sequence[] = {
  { &hf_gsm_map_ch_msisdn   , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ch_cug_CheckInfo, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CUG_CheckInfo },
  { &hf_gsm_map_ch_numberOfForwarding, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NumberOfForwarding },
  { &hf_gsm_map_ch_interrogationType, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_InterrogationType },
  { &hf_gsm_map_ch_or_Interrogation, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_or_Capability, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_OR_Phase },
  { &hf_gsm_map_ch_gmsc_OrGsmSCF_Address, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ch_callReferenceNumber, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CallReferenceNumber },
  { &hf_gsm_map_ch_forwardingReason, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_ForwardingReason },
  { &hf_gsm_map_ch_basicServiceGroup, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BasicServiceCode },
  { &hf_gsm_map_ch_networkSignalInfo, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo },
  { &hf_gsm_map_ch_camelInfo, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CamelInfo },
  { &hf_gsm_map_ch_suppressionOfAnnouncement, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_SuppressionOfAnnouncement },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ch_alertingPattern, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AlertingPattern },
  { &hf_gsm_map_ch_ccbs_Call, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_supportedCCBS_Phase, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_SupportedCCBS_Phase },
  { &hf_gsm_map_ch_additionalSignalInfo, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_ExternalSignalInfo },
  { &hf_gsm_map_ch_istSupportIndicator, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_IST_SupportIndicator },
  { &hf_gsm_map_ch_pre_pagingSupported, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_callDiversionTreatmentIndicator, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CallDiversionTreatmentIndicator },
  { &hf_gsm_map_ch_longFTN_Supported, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_suppress_VT_CSI, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_suppressIncomingCallBarring, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_gsmSCF_InitiatedCall, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_basicServiceGroup2, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BasicServiceCode },
  { &hf_gsm_map_ch_networkSignalInfo2, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo },
  { &hf_gsm_map_ch_suppressMTSS, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_SuppressMTSS },
  { &hf_gsm_map_ch_mtRoamingRetrySupported, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_callPriority, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_EMLPP_Priority },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_SendRoutingInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_SendRoutingInfoArg_sequence, hf_index, ett_gsm_map_ch_SendRoutingInfoArg);

  return offset;
}


static const ber_sequence_t gsm_map_ch_ForwardingData_sequence[] = {
  { &hf_gsm_map_ch_forwardedToNumber, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ch_forwardedToSubaddress, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_SubaddressString },
  { &hf_gsm_map_ch_forwardingOptions, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_ForwardingOptions },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ch_longForwardedToNumber, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_FTN_AddressString },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_ForwardingData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_ForwardingData_sequence, hf_index, ett_gsm_map_ch_ForwardingData);

  return offset;
}


static const value_string gsm_map_ch_RoutingInfo_vals[] = {
  {   0, "roamingNumber" },
  {   1, "forwardingData" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_ch_RoutingInfo_choice[] = {
  {   0, &hf_gsm_map_ch_roamingNumber, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  {   1, &hf_gsm_map_ch_forwardingData, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ch_ForwardingData },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_RoutingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_ch_RoutingInfo_choice, hf_index, ett_gsm_map_ch_RoutingInfo,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ch_GmscCamelSubscriptionInfo_sequence[] = {
  { &hf_gsm_map_ch_t_CSI    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_CSI },
  { &hf_gsm_map_ch_o_CSI    , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_CSI },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ch_o_BcsmCamelTDP_CriteriaList, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_BcsmCamelTDPCriteriaList },
  { &hf_gsm_map_ch_t_BCSM_CAMEL_TDP_CriteriaList, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList },
  { &hf_gsm_map_ch_d_csi    , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_D_CSI },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_GmscCamelSubscriptionInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_GmscCamelSubscriptionInfo_sequence, hf_index, ett_gsm_map_ch_GmscCamelSubscriptionInfo);

  return offset;
}


static const ber_sequence_t gsm_map_ch_CamelRoutingInfo_sequence[] = {
  { &hf_gsm_map_ch_forwardingData, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ch_ForwardingData },
  { &hf_gsm_map_ch_gmscCamelSubscriptionInfo, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_GmscCamelSubscriptionInfo },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_CamelRoutingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_CamelRoutingInfo_sequence, hf_index, ett_gsm_map_ch_CamelRoutingInfo);

  return offset;
}


static const value_string gsm_map_ch_ExtendedRoutingInfo_vals[] = {
  {   0, "routingInfo" },
  {   1, "camelRoutingInfo" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_ch_ExtendedRoutingInfo_choice[] = {
  {   0, &hf_gsm_map_ch_routingInfo, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ch_RoutingInfo },
  {   1, &hf_gsm_map_ch_camelRoutingInfo, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CamelRoutingInfo },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_ExtendedRoutingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_ch_ExtendedRoutingInfo_choice, hf_index, ett_gsm_map_ch_ExtendedRoutingInfo,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ch_CCBS_Indicators_sequence[] = {
  { &hf_gsm_map_ch_ccbs_Possible, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_keepCCBS_CallIndicator, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_CCBS_Indicators(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_CCBS_Indicators_sequence, hf_index, ett_gsm_map_ch_CCBS_Indicators);

  return offset;
}


static const asn_namedbit gsm_map_ch_AllowedServices_bits[] = {
  {  0, &hf_gsm_map_ch_AllowedServices_firstServiceAllowed, -1, -1, "firstServiceAllowed", NULL },
  {  1, &hf_gsm_map_ch_AllowedServices_secondServiceAllowed, -1, -1, "secondServiceAllowed", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

static int
dissect_gsm_map_ch_AllowedServices(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_ch_AllowedServices_bits, hf_index, ett_gsm_map_ch_AllowedServices,
                                    NULL);

  return offset;
}


static const value_string gsm_map_ch_UnavailabilityCause_vals[] = {
  {   1, "bearerServiceNotProvisioned" },
  {   2, "teleserviceNotProvisioned" },
  {   3, "absentSubscriber" },
  {   4, "busySubscriber" },
  {   5, "callBarred" },
  {   6, "cug-Reject" },
  { 0, NULL }
};


static int
dissect_gsm_map_ch_UnavailabilityCause(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ch_SendRoutingInfoRes_U_sequence[] = {
  { &hf_gsm_map_ch_imsi     , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ch_extendedRoutingInfo, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ch_ExtendedRoutingInfo },
  { &hf_gsm_map_ch_cug_CheckInfo, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CUG_CheckInfo },
  { &hf_gsm_map_ch_cugSubscriptionFlag, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_subscriberInfo, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SubscriberInfo },
  { &hf_gsm_map_ch_ss_List  , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_List },
  { &hf_gsm_map_ch_basicService, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BasicServiceCode },
  { &hf_gsm_map_ch_forwardingInterrogationRequired, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_vmsc_Address, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ch_naea_PreferredCI, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_NAEA_PreferredCI },
  { &hf_gsm_map_ch_ccbs_Indicators, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CCBS_Indicators },
  { &hf_gsm_map_ch_msisdn   , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ch_numberPortabilityStatus, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NumberPortabilityStatus },
  { &hf_gsm_map_ch_istAlertTimer, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_IST_AlertTimerValue },
  { &hf_gsm_map_ch_supportedCamelPhasesInVMSC, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCamelPhases },
  { &hf_gsm_map_ch_offeredCamel4CSIsInVMSC, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OfferedCamel4CSIs },
  { &hf_gsm_map_ch_routingInfo2, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_ch_RoutingInfo },
  { &hf_gsm_map_ch_ss_List2 , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_List },
  { &hf_gsm_map_ch_basicService2, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BasicServiceCode },
  { &hf_gsm_map_ch_allowedServices, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_AllowedServices },
  { &hf_gsm_map_ch_unavailabilityCause, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_UnavailabilityCause },
  { &hf_gsm_map_ch_releaseResourcesSupported, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_gsm_BearerCapability, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_SendRoutingInfoRes_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_SendRoutingInfoRes_U_sequence, hf_index, ett_gsm_map_ch_SendRoutingInfoRes_U);

  return offset;
}



static int
dissect_gsm_map_ch_SendRoutingInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
                                      hf_index, BER_CLASS_CON, 3, TRUE, dissect_gsm_map_ch_SendRoutingInfoRes_U);

  return offset;
}


static const ber_sequence_t gsm_map_ch_ProvideRoamingNumberArg_sequence[] = {
  { &hf_gsm_map_ch_imsi     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ch_msc_Number, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ch_msisdn   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ch_lmsi     , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI },
  { &hf_gsm_map_ch_gsm_BearerCapability, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo },
  { &hf_gsm_map_ch_networkSignalInfo, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo },
  { &hf_gsm_map_ch_suppressionOfAnnouncement, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_SuppressionOfAnnouncement },
  { &hf_gsm_map_ch_gmsc_Address, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ch_callReferenceNumber, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CallReferenceNumber },
  { &hf_gsm_map_ch_or_Interrogation, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ch_alertingPattern, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AlertingPattern },
  { &hf_gsm_map_ch_ccbs_Call, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_supportedCamelPhasesInInterrogatingNode, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedCamelPhases },
  { &hf_gsm_map_ch_additionalSignalInfo, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_ExternalSignalInfo },
  { &hf_gsm_map_ch_orNotSupportedInGMSC, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_pre_pagingSupported, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_longFTN_Supported, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_suppress_VT_CSI, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_offeredCamel4CSIsInInterrogatingNode, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_OfferedCamel4CSIs },
  { &hf_gsm_map_ch_mtRoamingRetrySupported, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_pagingArea, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_PagingArea },
  { &hf_gsm_map_ch_callPriority, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_EMLPP_Priority },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_ProvideRoamingNumberArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_ProvideRoamingNumberArg_sequence, hf_index, ett_gsm_map_ch_ProvideRoamingNumberArg);

  return offset;
}


static const ber_sequence_t gsm_map_ch_ProvideRoamingNumberRes_sequence[] = {
  { &hf_gsm_map_ch_roamingNumber, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ch_releaseResourcesSupported, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ch_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_ProvideRoamingNumberRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_ProvideRoamingNumberRes_sequence, hf_index, ett_gsm_map_ch_ProvideRoamingNumberRes);

  return offset;
}



static int
dissect_gsm_map_ch_UUIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_ch_UUI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ch_UU_Data_sequence[] = {
  { &hf_gsm_map_ch_uuIndicator, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_UUIndicator },
  { &hf_gsm_map_ch_uui      , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_UUI },
  { &hf_gsm_map_ch_uusCFInteraction, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_ch_UU_Data(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_UU_Data_sequence, hf_index, ett_gsm_map_ch_UU_Data);

  return offset;
}


static const ber_sequence_t gsm_map_ch_ResumeCallHandlingArg_sequence[] = {
  { &hf_gsm_map_ch_callReferenceNumber, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CallReferenceNumber },
  { &hf_gsm_map_ch_basicServiceGroup, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BasicServiceCode },
  { &hf_gsm_map_ch_forwardingData, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_ForwardingData },
  { &hf_gsm_map_ch_imsi     , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ch_cug_CheckInfo, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CUG_CheckInfo },
  { &hf_gsm_map_ch_o_CSI    , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_CSI },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_ch_ccbs_Possible, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_msisdn   , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ch_uu_Data  , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_UU_Data },
  { &hf_gsm_map_ch_allInformationSent, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_d_csi    , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_D_CSI },
  { &hf_gsm_map_ch_o_BcsmCamelTDPCriteriaList, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_O_BcsmCamelTDPCriteriaList },
  { &hf_gsm_map_ch_basicServiceGroup2, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_Ext_BasicServiceCode },
  { &hf_gsm_map_ch_mtRoamingRetry, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_ResumeCallHandlingArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_ResumeCallHandlingArg_sequence, hf_index, ett_gsm_map_ch_ResumeCallHandlingArg);

  return offset;
}


static const ber_sequence_t gsm_map_ch_ResumeCallHandlingRes_sequence[] = {
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_ResumeCallHandlingRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_ResumeCallHandlingRes_sequence, hf_index, ett_gsm_map_ch_ResumeCallHandlingRes);

  return offset;
}


static const value_string gsm_map_ch_ReportingState_vals[] = {
  {   0, "stopMonitoring" },
  {   1, "startMonitoring" },
  { 0, NULL }
};


static int
dissect_gsm_map_ch_ReportingState(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ch_SetReportingStateArg_sequence[] = {
  { &hf_gsm_map_ch_imsi     , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ch_lmsi     , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI },
  { &hf_gsm_map_ch_ccbs_Monitoring, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_ReportingState },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_SetReportingStateArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_SetReportingStateArg_sequence, hf_index, ett_gsm_map_ch_SetReportingStateArg);

  return offset;
}


static const value_string gsm_map_ch_CCBS_SubscriberStatus_vals[] = {
  {   0, "ccbsNotIdle" },
  {   1, "ccbsIdle" },
  {   2, "ccbsNotReachable" },
  { 0, NULL }
};


static int
dissect_gsm_map_ch_CCBS_SubscriberStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ch_SetReportingStateRes_sequence[] = {
  { &hf_gsm_map_ch_ccbs_SubscriberStatus, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CCBS_SubscriberStatus },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_SetReportingStateRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_SetReportingStateRes_sequence, hf_index, ett_gsm_map_ch_SetReportingStateRes);

  return offset;
}


static const ber_sequence_t gsm_map_ch_EventReportData_sequence[] = {
  { &hf_gsm_map_ch_ccbs_SubscriberStatus, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CCBS_SubscriberStatus },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_EventReportData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_EventReportData_sequence, hf_index, ett_gsm_map_ch_EventReportData);

  return offset;
}


static const value_string gsm_map_ch_MonitoringMode_vals[] = {
  {   0, "a-side" },
  {   1, "b-side" },
  { 0, NULL }
};


static int
dissect_gsm_map_ch_MonitoringMode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const value_string gsm_map_ch_CallOutcome_vals[] = {
  {   0, "success" },
  {   1, "failure" },
  {   2, "busy" },
  { 0, NULL }
};


static int
dissect_gsm_map_ch_CallOutcome(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ch_CallReportData_sequence[] = {
  { &hf_gsm_map_ch_monitoringMode, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_MonitoringMode },
  { &hf_gsm_map_ch_callOutcome, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CallOutcome },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_CallReportData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_CallReportData_sequence, hf_index, ett_gsm_map_ch_CallReportData);

  return offset;
}


static const ber_sequence_t gsm_map_ch_StatusReportArg_sequence[] = {
  { &hf_gsm_map_ch_imsi     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ch_eventReportData, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_EventReportData },
  { &hf_gsm_map_ch_callReportdata, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CallReportData },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_StatusReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_StatusReportArg_sequence, hf_index, ett_gsm_map_ch_StatusReportArg);

  return offset;
}


static const ber_sequence_t gsm_map_ch_StatusReportRes_sequence[] = {
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_StatusReportRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_StatusReportRes_sequence, hf_index, ett_gsm_map_ch_StatusReportRes);

  return offset;
}


static const ber_sequence_t gsm_map_ch_RemoteUserFreeArg_sequence[] = {
  { &hf_gsm_map_ch_imsi     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ch_callInfo , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo },
  { &hf_gsm_map_ch_ccbs_Feature, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CCBS_Feature },
  { &hf_gsm_map_ch_translatedB_Number, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ch_replaceB_Number, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_alertingPattern, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AlertingPattern },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_RemoteUserFreeArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_RemoteUserFreeArg_sequence, hf_index, ett_gsm_map_ch_RemoteUserFreeArg);

  return offset;
}


static const value_string gsm_map_ch_RUF_Outcome_vals[] = {
  {   0, "accepted" },
  {   1, "rejected" },
  {   2, "noResponseFromFreeMS" },
  {   3, "noResponseFromBusyMS" },
  {   4, "udubFromFreeMS" },
  {   5, "udubFromBusyMS" },
  { 0, NULL }
};


static int
dissect_gsm_map_ch_RUF_Outcome(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ch_RemoteUserFreeRes_sequence[] = {
  { &hf_gsm_map_ch_ruf_Outcome, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_RUF_Outcome },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_RemoteUserFreeRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_RemoteUserFreeRes_sequence, hf_index, ett_gsm_map_ch_RemoteUserFreeRes);

  return offset;
}


static const ber_sequence_t gsm_map_ch_IST_AlertArg_sequence[] = {
  { &hf_gsm_map_ch_imsi     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_IST_AlertArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_IST_AlertArg_sequence, hf_index, ett_gsm_map_ch_IST_AlertArg);

  return offset;
}


static const value_string gsm_map_ch_CallTerminationIndicator_vals[] = {
  {   0, "terminateCallActivityReferred" },
  {   1, "terminateAllCallActivities" },
  { 0, NULL }
};


static int
dissect_gsm_map_ch_CallTerminationIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_ch_IST_AlertRes_sequence[] = {
  { &hf_gsm_map_ch_istAlertTimer, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_IST_AlertTimerValue },
  { &hf_gsm_map_ch_istInformationWithdraw, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NULL },
  { &hf_gsm_map_ch_callTerminationIndicator, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CallTerminationIndicator },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_IST_AlertRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_IST_AlertRes_sequence, hf_index, ett_gsm_map_ch_IST_AlertRes);

  return offset;
}


static const ber_sequence_t gsm_map_ch_IST_CommandArg_sequence[] = {
  { &hf_gsm_map_ch_imsi     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_IST_CommandArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_IST_CommandArg_sequence, hf_index, ett_gsm_map_ch_IST_CommandArg);

  return offset;
}


static const ber_sequence_t gsm_map_ch_IST_CommandRes_sequence[] = {
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_IST_CommandRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_IST_CommandRes_sequence, hf_index, ett_gsm_map_ch_IST_CommandRes);

  return offset;
}


static const ber_sequence_t gsm_map_ch_ReleaseResourcesArg_sequence[] = {
  { &hf_gsm_map_ch_msrn     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_ReleaseResourcesArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_ReleaseResourcesArg_sequence, hf_index, ett_gsm_map_ch_ReleaseResourcesArg);

  return offset;
}


static const ber_sequence_t gsm_map_ch_ReleaseResourcesRes_sequence[] = {
  { &hf_gsm_map_ch_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_ch_ReleaseResourcesRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_ch_ReleaseResourcesRes_sequence, hf_index, ett_gsm_map_ch_ReleaseResourcesRes);

  return offset;
}


/* --- Module MAP-LCS-DataTypes --- --- ---                                   */


static const ber_sequence_t gsm_map_lcs_RoutingInfoForLCS_Arg_sequence[] = {
  { &hf_gsm_map_lcs_mlcNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_lcs_targetMS, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_SubscriberIdentity },
  { &hf_gsm_map_lcs_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_lcs_RoutingInfoForLCS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_RoutingInfoForLCS_Arg_sequence, hf_index, ett_gsm_map_lcs_RoutingInfoForLCS_Arg);

  return offset;
}



static int
dissect_gsm_map_lcs_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_LCSLocationInfo_sequence[] = {
  { &hf_gsm_map_lcs_networkNode_Number, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_lcs_lmsi    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI },
  { &hf_gsm_map_lcs_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_lcs_gprsNodeIndicator, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL },
  { &hf_gsm_map_lcs_additional_Number, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_sm_Additional_Number },
  { &hf_gsm_map_lcs_supportedLCS_CapabilitySets, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedLCS_CapabilitySets },
  { &hf_gsm_map_lcs_additional_LCS_CapabilitySets, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_SupportedLCS_CapabilitySets },
  { &hf_gsm_map_lcs_mme_Name, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity },
  { &hf_gsm_map_lcs_aaa_Server_Name, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_lcs_LCSLocationInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_LCSLocationInfo_sequence, hf_index, ett_gsm_map_lcs_LCSLocationInfo);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_RoutingInfoForLCS_Res_sequence[] = {
  { &hf_gsm_map_lcs_targetMS, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SubscriberIdentity },
  { &hf_gsm_map_lcs_lcsLocationInfo, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSLocationInfo },
  { &hf_gsm_map_lcs_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_lcs_v_gmlc_Address, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_map_lcs_h_gmlc_Address, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_map_lcs_ppr_Address, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_map_lcs_additional_v_gmlc_Address, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_lcs_RoutingInfoForLCS_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_RoutingInfoForLCS_Res_sequence, hf_index, ett_gsm_map_lcs_RoutingInfoForLCS_Res);

  return offset;
}


static const value_string gsm_map_lcs_LocationEstimateType_vals[] = {
  {   0, "currentLocation" },
  {   1, "currentOrLastKnownLocation" },
  {   2, "initialLocation" },
  {   3, "activateDeferredLocation" },
  {   4, "cancelDeferredLocation" },
  {   5, "notificationVerificationOnly" },
  { 0, NULL }
};


static int
dissect_gsm_map_lcs_LocationEstimateType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const asn_namedbit gsm_map_lcs_DeferredLocationEventType_bits[] = {
  {  0, &hf_gsm_map_lcs_DeferredLocationEventType_msAvailable, -1, -1, "msAvailable", NULL },
  {  1, &hf_gsm_map_lcs_DeferredLocationEventType_enteringIntoArea, -1, -1, "enteringIntoArea", NULL },
  {  2, &hf_gsm_map_lcs_DeferredLocationEventType_leavingFromArea, -1, -1, "leavingFromArea", NULL },
  {  3, &hf_gsm_map_lcs_DeferredLocationEventType_beingInsideArea, -1, -1, "beingInsideArea", NULL },
  {  4, &hf_gsm_map_lcs_DeferredLocationEventType_periodicLDR, -1, -1, "periodicLDR", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

int
dissect_gsm_map_lcs_DeferredLocationEventType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_lcs_DeferredLocationEventType_bits, hf_index, ett_gsm_map_lcs_DeferredLocationEventType,
                                    NULL);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_LocationType_sequence[] = {
  { &hf_gsm_map_lcs_locationEstimateType, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LocationEstimateType },
  { &hf_gsm_map_lcs_deferredLocationEventType, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_DeferredLocationEventType },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_lcs_LocationType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_LocationType_sequence, hf_index, ett_gsm_map_lcs_LocationType);

  return offset;
}


const value_string gsm_map_lcs_LCSClientType_vals[] = {
  {   0, "emergencyServices" },
  {   1, "valueAddedServices" },
  {   2, "plmnOperatorServices" },
  {   3, "lawfulInterceptServices" },
  { 0, NULL }
};


int
dissect_gsm_map_lcs_LCSClientType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}



static int
dissect_gsm_map_lcs_NameString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_gsm_map_ss_USSD_String(implicit_tag, tvb, offset, actx, tree, hf_index);

  return offset;
}


static const value_string gsm_map_lcs_LCS_FormatIndicator_vals[] = {
  {   0, "logicalName" },
  {   1, "e-mailAddress" },
  {   2, "msisdn" },
  {   3, "url" },
  {   4, "sipUrl" },
  { 0, NULL }
};


static int
dissect_gsm_map_lcs_LCS_FormatIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_LCSClientName_sequence[] = {
  { &hf_gsm_map_lcs_dataCodingScheme, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_USSD_DataCodingScheme },
  { &hf_gsm_map_lcs_nameString, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NameString },
  { &hf_gsm_map_lcs_lcs_FormatIndicator, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_FormatIndicator },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_lcs_LCSClientName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_LCSClientName_sequence, hf_index, ett_gsm_map_lcs_LCSClientName);

  return offset;
}



static int
dissect_gsm_map_lcs_RequestorIDString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_gsm_map_ss_USSD_String(implicit_tag, tvb, offset, actx, tree, hf_index);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_LCSRequestorID_sequence[] = {
  { &hf_gsm_map_lcs_dataCodingScheme, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_USSD_DataCodingScheme },
  { &hf_gsm_map_lcs_requestorIDString, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_RequestorIDString },
  { &hf_gsm_map_lcs_lcs_FormatIndicator, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_FormatIndicator },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_lcs_LCSRequestorID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_LCSRequestorID_sequence, hf_index, ett_gsm_map_lcs_LCSRequestorID);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_LCS_ClientID_sequence[] = {
  { &hf_gsm_map_lcs_lcsClientType, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSClientType },
  { &hf_gsm_map_lcs_lcsClientExternalID, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSClientExternalID },
  { &hf_gsm_map_lcs_lcsClientDialedByMS, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
  { &hf_gsm_map_lcs_lcsClientInternalID, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSClientInternalID },
  { &hf_gsm_map_lcs_lcsClientName, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSClientName },
  { &hf_gsm_map_lcs_lcsAPN  , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_APN },
  { &hf_gsm_map_lcs_lcsRequestorID, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSRequestorID },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_lcs_LCS_ClientID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_LCS_ClientID_sequence, hf_index, ett_gsm_map_lcs_LCS_ClientID);

  return offset;
}



int
dissect_gsm_map_lcs_LCS_Priority(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_lcs_Horizontal_Accuracy(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_lcs_Vertical_Accuracy(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const value_string gsm_map_lcs_ResponseTimeCategory_vals[] = {
  {   0, "lowdelay" },
  {   1, "delaytolerant" },
  { 0, NULL }
};


static int
dissect_gsm_map_lcs_ResponseTimeCategory(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_ResponseTime_sequence[] = {
  { &hf_gsm_map_lcs_responseTimeCategory, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_ResponseTimeCategory },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_lcs_ResponseTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_ResponseTime_sequence, hf_index, ett_gsm_map_lcs_ResponseTime);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_LCS_QoS_sequence[] = {
  { &hf_gsm_map_lcs_horizontal_accuracy, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Horizontal_Accuracy },
  { &hf_gsm_map_lcs_verticalCoordinateRequest, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL },
  { &hf_gsm_map_lcs_vertical_accuracy, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Vertical_Accuracy },
  { &hf_gsm_map_lcs_responseTime, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_ResponseTime },
  { &hf_gsm_map_lcs_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_lcs_velocityRequest, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_lcs_LCS_QoS(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_LCS_QoS_sequence, hf_index, ett_gsm_map_lcs_LCS_QoS);

  return offset;
}


static const asn_namedbit gsm_map_lcs_SupportedGADShapes_bits[] = {
  {  0, &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPoint, -1, -1, "ellipsoidPoint", NULL },
  {  1, &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithUncertaintyCircle, -1, -1, "ellipsoidPointWithUncertaintyCircle", NULL },
  {  2, &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithUncertaintyEllipse, -1, -1, "ellipsoidPointWithUncertaintyEllipse", NULL },
  {  3, &hf_gsm_map_lcs_SupportedGADShapes_polygon, -1, -1, "polygon", NULL },
  {  4, &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithAltitude, -1, -1, "ellipsoidPointWithAltitude", NULL },
  {  5, &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithAltitudeAndUncertaintyElipsoid, -1, -1, "ellipsoidPointWithAltitudeAndUncertaintyElipsoid", NULL },
  {  6, &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidArc, -1, -1, "ellipsoidArc", NULL },
  { 0, NULL, 0, 0, NULL, NULL }
};

int
dissect_gsm_map_lcs_SupportedGADShapes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
                                    gsm_map_lcs_SupportedGADShapes_bits, hf_index, ett_gsm_map_lcs_SupportedGADShapes,
                                    NULL);

  return offset;
}



int
dissect_gsm_map_lcs_LCS_ReferenceNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_lcs_LCSCodewordString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_gsm_map_ss_USSD_String(implicit_tag, tvb, offset, actx, tree, hf_index);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_LCSCodeword_sequence[] = {
  { &hf_gsm_map_lcs_dataCodingScheme, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_USSD_DataCodingScheme },
  { &hf_gsm_map_lcs_lcsCodewordString, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSCodewordString },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_lcs_LCSCodeword(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_LCSCodeword_sequence, hf_index, ett_gsm_map_lcs_LCSCodeword);

  return offset;
}


static const value_string gsm_map_lcs_PrivacyCheckRelatedAction_vals[] = {
  {   0, "allowedWithoutNotification" },
  {   1, "allowedWithNotification" },
  {   2, "allowedIfNoResponse" },
  {   3, "restrictedIfNoResponse" },
  {   4, "notAllowed" },
  { 0, NULL }
};


static int
dissect_gsm_map_lcs_PrivacyCheckRelatedAction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_LCS_PrivacyCheck_sequence[] = {
  { &hf_gsm_map_lcs_callSessionUnrelated, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PrivacyCheckRelatedAction },
  { &hf_gsm_map_lcs_callSessionRelated, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PrivacyCheckRelatedAction },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_lcs_LCS_PrivacyCheck(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_LCS_PrivacyCheck_sequence, hf_index, ett_gsm_map_lcs_LCS_PrivacyCheck);

  return offset;
}


static const value_string gsm_map_lcs_AreaType_vals[] = {
  {   0, "countryCode" },
  {   1, "plmnId" },
  {   2, "locationAreaId" },
  {   3, "routingAreaId" },
  {   4, "cellGlobalId" },
  {   5, "utranCellId" },
  { 0, NULL }
};


static int
dissect_gsm_map_lcs_AreaType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}



static int
dissect_gsm_map_lcs_AreaIdentification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_Area_sequence[] = {
  { &hf_gsm_map_lcs_areaType, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_AreaType },
  { &hf_gsm_map_lcs_areaIdentification, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_AreaIdentification },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_lcs_Area(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_Area_sequence, hf_index, ett_gsm_map_lcs_Area);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_AreaList_sequence_of[1] = {
  { &hf_gsm_map_lcs_AreaList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_Area },
};

static int
dissect_gsm_map_lcs_AreaList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_lcs_AreaList_sequence_of, hf_index, ett_gsm_map_lcs_AreaList);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_AreaDefinition_sequence[] = {
  { &hf_gsm_map_lcs_areaList, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_AreaList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_lcs_AreaDefinition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_AreaDefinition_sequence, hf_index, ett_gsm_map_lcs_AreaDefinition);

  return offset;
}


static const value_string gsm_map_lcs_OccurrenceInfo_vals[] = {
  {   0, "oneTimeEvent" },
  {   1, "multipleTimeEvent" },
  { 0, NULL }
};


static int
dissect_gsm_map_lcs_OccurrenceInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}



static int
dissect_gsm_map_lcs_IntervalTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_AreaEventInfo_sequence[] = {
  { &hf_gsm_map_lcs_areaDefinition, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_AreaDefinition },
  { &hf_gsm_map_lcs_occurrenceInfo, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_OccurrenceInfo },
  { &hf_gsm_map_lcs_intervalTime, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_IntervalTime },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_map_lcs_AreaEventInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_AreaEventInfo_sequence, hf_index, ett_gsm_map_lcs_AreaEventInfo);

  return offset;
}



static int
dissect_gsm_map_lcs_ReportingAmount(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_map_lcs_ReportingInterval(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_PeriodicLDRInfo_sequence[] = {
  { &hf_gsm_map_lcs_reportingAmount, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_ReportingAmount },
  { &hf_gsm_map_lcs_reportingInterval, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_ReportingInterval },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_lcs_PeriodicLDRInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_PeriodicLDRInfo_sequence, hf_index, ett_gsm_map_lcs_PeriodicLDRInfo);

  return offset;
}


static const value_string gsm_map_lcs_RAN_Technology_vals[] = {
  {   0, "gsm" },
  {   1, "umts" },
  { 0, NULL }
};


static int
dissect_gsm_map_lcs_RAN_Technology(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_ReportingPLMN_sequence[] = {
  { &hf_gsm_map_lcs_plmn_Id , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_PLMN_Id },
  { &hf_gsm_map_lcs_ran_Technology, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_RAN_Technology },
  { &hf_gsm_map_lcs_ran_PeriodicLocationSupport, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_lcs_ReportingPLMN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_ReportingPLMN_sequence, hf_index, ett_gsm_map_lcs_ReportingPLMN);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_PLMNList_sequence_of[1] = {
  { &hf_gsm_map_lcs_PLMNList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_ReportingPLMN },
};

static int
dissect_gsm_map_lcs_PLMNList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_map_lcs_PLMNList_sequence_of, hf_index, ett_gsm_map_lcs_PLMNList);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_ReportingPLMNList_sequence[] = {
  { &hf_gsm_map_lcs_plmn_ListPrioritized, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL },
  { &hf_gsm_map_lcs_plmn_List, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PLMNList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_lcs_ReportingPLMNList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_ReportingPLMNList_sequence, hf_index, ett_gsm_map_lcs_ReportingPLMNList);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_ProvideSubscriberLocation_Arg_sequence[] = {
  { &hf_gsm_map_lcs_locationType, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_LocationType },
  { &hf_gsm_map_lcs_mlc_Number, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_lcs_lcs_ClientID, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ClientID },
  { &hf_gsm_map_lcs_privacyOverride, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL },
  { &hf_gsm_map_lcs_imsi    , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_lcs_msisdn  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_lcs_lmsi    , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI },
  { &hf_gsm_map_lcs_imei    , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
  { &hf_gsm_map_lcs_lcs_Priority, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_Priority },
  { &hf_gsm_map_lcs_lcs_QoS , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_QoS },
  { &hf_gsm_map_lcs_extensionContainer, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_lcs_supportedGADShapes, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_SupportedGADShapes },
  { &hf_gsm_map_lcs_lcs_ReferenceNumber, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber },
  { &hf_gsm_map_lcs_lcsServiceTypeID, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSServiceTypeID },
  { &hf_gsm_map_lcs_lcsCodeword, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSCodeword },
  { &hf_gsm_map_lcs_lcs_PrivacyCheck, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_PrivacyCheck },
  { &hf_gsm_map_lcs_areaEventInfo, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_AreaEventInfo },
  { &hf_gsm_map_lcs_h_gmlc_Address, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_map_lcs_mo_lrShortCircuitIndicator, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL },
  { &hf_gsm_map_lcs_periodicLDRInfo, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PeriodicLDRInfo },
  { &hf_gsm_map_lcs_reportingPLMNList, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_ReportingPLMNList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_lcs_ProvideSubscriberLocation_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_ProvideSubscriberLocation_Arg_sequence, hf_index, ett_gsm_map_lcs_ProvideSubscriberLocation_Arg);

  return offset;
}



int
dissect_gsm_map_lcs_Ext_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 810 "../../asn1/gsm_map/gsm_map.cnf"
    tvbuff_t	*parameter_tvb;
	proto_tree	*subtree;

  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       &parameter_tvb);


	if (!parameter_tvb)
                return offset;

    subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_GeographicalInformation);
	dissect_geographical_description(parameter_tvb, actx->pinfo, subtree);



  return offset;
}



int
dissect_gsm_map_lcs_Add_GeographicalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_lcs_PositioningDataInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_lcs_UtranPositioningDataInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const value_string gsm_map_lcs_AccuracyFulfilmentIndicator_vals[] = {
  {   0, "requestedAccuracyFulfilled" },
  {   1, "requestedAccuracyNotFulfilled" },
  { 0, NULL }
};


static int
dissect_gsm_map_lcs_AccuracyFulfilmentIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}



int
dissect_gsm_map_lcs_VelocityEstimate(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_lcs_GeranGANSSpositioningData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_lcs_UtranGANSSpositioningData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const value_string gsm_map_lcs_ServingNodeAddress_vals[] = {
  {   0, "msc-Number" },
  {   1, "sgsn-Number" },
  {   2, "mme-Number" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_lcs_ServingNodeAddress_choice[] = {
  {   0, &hf_gsm_map_lcs_msc_Number, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  {   1, &hf_gsm_map_lcs_sgsn_Number, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  {   2, &hf_gsm_map_lcs_mme_Number, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_DiameterIdentity },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_lcs_ServingNodeAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_lcs_ServingNodeAddress_choice, hf_index, ett_gsm_map_lcs_ServingNodeAddress,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_ProvideSubscriberLocation_Res_sequence[] = {
  { &hf_gsm_map_lcs_locationEstimate, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_Ext_GeographicalInformation },
  { &hf_gsm_map_lcs_ageOfLocationEstimate, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AgeOfLocationInformation },
  { &hf_gsm_map_lcs_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_lcs_add_LocationEstimate, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Add_GeographicalInformation },
  { &hf_gsm_map_lcs_deferredmt_lrResponseIndicator, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL },
  { &hf_gsm_map_lcs_geranPositioningData, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PositioningDataInformation },
  { &hf_gsm_map_lcs_utranPositioningData, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_UtranPositioningDataInfo },
  { &hf_gsm_map_lcs_cellIdOrSai, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI },
  { &hf_gsm_map_lcs_sai_Present, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL },
  { &hf_gsm_map_lcs_accuracyFulfilmentIndicator, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_AccuracyFulfilmentIndicator },
  { &hf_gsm_map_lcs_velocityEstimate, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_VelocityEstimate },
  { &hf_gsm_map_lcs_mo_lrShortCircuitIndicator, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL },
  { &hf_gsm_map_lcs_geranGANSSpositioningData, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_GeranGANSSpositioningData },
  { &hf_gsm_map_lcs_utranGANSSpositioningData, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_UtranGANSSpositioningData },
  { &hf_gsm_map_lcs_targetServingNodeForHandover, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_lcs_ServingNodeAddress },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_lcs_ProvideSubscriberLocation_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_ProvideSubscriberLocation_Res_sequence, hf_index, ett_gsm_map_lcs_ProvideSubscriberLocation_Res);

  return offset;
}


static const value_string gsm_map_lcs_LCS_Event_vals[] = {
  {   0, "emergencyCallOrigination" },
  {   1, "emergencyCallRelease" },
  {   2, "mo-lr" },
  {   3, "deferredmt-lrResponse" },
  {   4, "deferredmo-lrTTTPInitiation" },
  {   5, "emergencyCallHandover" },
  { 0, NULL }
};


static int
dissect_gsm_map_lcs_LCS_Event(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const value_string gsm_map_lcs_TerminationCause_vals[] = {
  {   0, "normal" },
  {   1, "errorundefined" },
  {   2, "internalTimeout" },
  {   3, "congestion" },
  {   4, "mt-lrRestart" },
  {   5, "privacyViolation" },
  {   6, "shapeOfLocationEstimateNotSupported" },
  {   7, "subscriberTermination" },
  {   8, "uETermination" },
  {   9, "networkTermination" },
  { 0, NULL }
};


static int
dissect_gsm_map_lcs_TerminationCause(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_Deferredmt_lrData_sequence[] = {
  { &hf_gsm_map_lcs_deferredLocationEventType, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_DeferredLocationEventType },
  { &hf_gsm_map_lcs_terminationCause, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_TerminationCause },
  { &hf_gsm_map_lcs_lcsLocationInfo, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSLocationInfo },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_lcs_Deferredmt_lrData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_Deferredmt_lrData_sequence, hf_index, ett_gsm_map_lcs_Deferredmt_lrData);

  return offset;
}



static int
dissect_gsm_map_lcs_SequenceNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_SubscriberLocationReport_Arg_sequence[] = {
  { &hf_gsm_map_lcs_lcs_Event, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_LCS_Event },
  { &hf_gsm_map_lcs_lcs_ClientID, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_LCS_ClientID },
  { &hf_gsm_map_lcs_lcsLocationInfo, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_map_lcs_LCSLocationInfo },
  { &hf_gsm_map_lcs_msisdn  , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_lcs_imsi    , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_lcs_imei    , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
  { &hf_gsm_map_lcs_na_ESRD , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_lcs_na_ESRK , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_lcs_locationEstimate, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Ext_GeographicalInformation },
  { &hf_gsm_map_lcs_ageOfLocationEstimate, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AgeOfLocationInformation },
  { &hf_gsm_map_lcs_slr_ArgExtensionContainer, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_SLR_ArgExtensionContainer },
  { &hf_gsm_map_lcs_add_LocationEstimate, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Add_GeographicalInformation },
  { &hf_gsm_map_lcs_deferredmt_lrData, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Deferredmt_lrData },
  { &hf_gsm_map_lcs_lcs_ReferenceNumber, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber },
  { &hf_gsm_map_lcs_geranPositioningData, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PositioningDataInformation },
  { &hf_gsm_map_lcs_utranPositioningData, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_UtranPositioningDataInfo },
  { &hf_gsm_map_lcs_cellIdOrSai, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI },
  { &hf_gsm_map_lcs_h_gmlc_Address, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_map_lcs_lcsServiceTypeID, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSServiceTypeID },
  { &hf_gsm_map_lcs_sai_Present, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL },
  { &hf_gsm_map_lcs_pseudonymIndicator, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL },
  { &hf_gsm_map_lcs_accuracyFulfilmentIndicator, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_AccuracyFulfilmentIndicator },
  { &hf_gsm_map_lcs_velocityEstimate, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_VelocityEstimate },
  { &hf_gsm_map_lcs_sequenceNumber, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_SequenceNumber },
  { &hf_gsm_map_lcs_periodicLDRInfo, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PeriodicLDRInfo },
  { &hf_gsm_map_lcs_mo_lrShortCircuitIndicator, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL },
  { &hf_gsm_map_lcs_geranGANSSpositioningData, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_GeranGANSSpositioningData },
  { &hf_gsm_map_lcs_utranGANSSpositioningData, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_UtranGANSSpositioningData },
  { &hf_gsm_map_lcs_targetServingNodeForHandover, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_lcs_ServingNodeAddress },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_lcs_SubscriberLocationReport_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_SubscriberLocationReport_Arg_sequence, hf_index, ett_gsm_map_lcs_SubscriberLocationReport_Arg);

  return offset;
}


static const ber_sequence_t gsm_map_lcs_SubscriberLocationReport_Res_sequence[] = {
  { &hf_gsm_map_lcs_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_lcs_na_ESRK , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_lcs_na_ESRD , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_lcs_h_gmlc_Address, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_map_lcs_mo_lrShortCircuitIndicator, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_NULL },
  { &hf_gsm_map_lcs_reportingPLMNList, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_ReportingPLMNList },
  { &hf_gsm_map_lcs_lcs_ReferenceNumber, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_lcs_SubscriberLocationReport_Res(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_lcs_SubscriberLocationReport_Res_sequence, hf_index, ett_gsm_map_lcs_SubscriberLocationReport_Res);

  return offset;
}

/*--- PDUs ---*/

int dissect_gsm_map_lcs_LCS_ClientID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
  int offset = 0;
  asn1_ctx_t asn1_ctx;
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
  offset = dissect_gsm_map_lcs_LCS_ClientID(FALSE, tvb, offset, &asn1_ctx, tree, hf_gsm_map_lcs_gsm_map_lcs_LCS_ClientID_PDU);
  return offset;
}


/* --- Module MAP-GR-DataTypes --- --- ---                                    */



static int
dissect_gsm_map_gr_CODEC_Info(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_gr_CipheringAlgorithm(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_gr_GroupKeyNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_map_gr_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);

  return offset;
}



static int
dissect_gsm_map_gr_VSTK(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_map_gr_VSTK_RAND(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_map_gr_PrepareGroupCallArg_sequence[] = {
  { &hf_gsm_map_gr_teleservice, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_TeleserviceCode },
  { &hf_gsm_map_gr_asciCallReference, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ASCI_CallReference },
  { &hf_gsm_map_gr_codec_Info, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_gr_CODEC_Info },
  { &hf_gsm_map_gr_cipheringAlgorithm, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_gr_CipheringAlgorithm },
  { &hf_gsm_map_gr_groupKeyNumber_Vk_Id, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_GroupKeyNumber },
  { &hf_gsm_map_gr_groupKey , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Kc },
  { &hf_gsm_map_gr_priority , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_EMLPP_Priority },
  { &hf_gsm_map_gr_uplinkFree, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL },
  { &hf_gsm_map_gr_extensionContainer, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_gr_vstk     , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_VSTK },
  { &hf_gsm_map_gr_vstk_rand, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_VSTK_RAND },
  { &hf_gsm_map_gr_talkerChannelParameter, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL },
  { &hf_gsm_map_gr_uplinkReplyIndicator, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_gr_PrepareGroupCallArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_gr_PrepareGroupCallArg_sequence, hf_index, ett_gsm_map_gr_PrepareGroupCallArg);

  return offset;
}


static const ber_sequence_t gsm_map_gr_PrepareGroupCallRes_sequence[] = {
  { &hf_gsm_map_gr_groupCallNumber, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_gr_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_gr_PrepareGroupCallRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_gr_PrepareGroupCallRes_sequence, hf_index, ett_gsm_map_gr_PrepareGroupCallRes);

  return offset;
}


static const value_string gsm_map_gr_TalkerPriority_vals[] = {
  {   0, "normal" },
  {   1, "privileged" },
  {   2, "emergency" },
  { 0, NULL }
};


static int
dissect_gsm_map_gr_TalkerPriority(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_gr_SendGroupCallEndSignalArg_sequence[] = {
  { &hf_gsm_map_gr_imsi     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_gr_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_gr_talkerPriority, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_TalkerPriority },
  { &hf_gsm_map_gr_additionalInfo, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdditionalInfo },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_gr_SendGroupCallEndSignalArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_gr_SendGroupCallEndSignalArg_sequence, hf_index, ett_gsm_map_gr_SendGroupCallEndSignalArg);

  return offset;
}


static const ber_sequence_t gsm_map_gr_SendGroupCallEndSignalRes_sequence[] = {
  { &hf_gsm_map_gr_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_gr_SendGroupCallEndSignalRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_gr_SendGroupCallEndSignalRes_sequence, hf_index, ett_gsm_map_gr_SendGroupCallEndSignalRes);

  return offset;
}


static const ber_sequence_t gsm_map_gr_StateAttributes_sequence[] = {
  { &hf_gsm_map_gr_downlinkAttached, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL },
  { &hf_gsm_map_gr_uplinkAttached, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL },
  { &hf_gsm_map_gr_dualCommunication, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL },
  { &hf_gsm_map_gr_callOriginator, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_gr_StateAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_gr_StateAttributes_sequence, hf_index, ett_gsm_map_gr_StateAttributes);

  return offset;
}


static const ber_sequence_t gsm_map_gr_ForwardGroupCallSignallingArg_sequence[] = {
  { &hf_gsm_map_gr_imsi     , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_gr_uplinkRequestAck, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL },
  { &hf_gsm_map_gr_uplinkReleaseIndication, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL },
  { &hf_gsm_map_gr_uplinkRejectCommand, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL },
  { &hf_gsm_map_gr_uplinkSeizedCommand, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL },
  { &hf_gsm_map_gr_uplinkReleaseCommand, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL },
  { &hf_gsm_map_gr_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_gr_stateAttributes, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_StateAttributes },
  { &hf_gsm_map_gr_talkerPriority, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_TalkerPriority },
  { &hf_gsm_map_gr_additionalInfo, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdditionalInfo },
  { &hf_gsm_map_gr_emergencyModeResetCommandFlag, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL },
  { &hf_gsm_map_gr_sm_RP_UI , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_SignalInfo },
  { &hf_gsm_map_gr_an_APDU  , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AccessNetworkSignalInfo },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_gr_ForwardGroupCallSignallingArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_gr_ForwardGroupCallSignallingArg_sequence, hf_index, ett_gsm_map_gr_ForwardGroupCallSignallingArg);

  return offset;
}


static const ber_sequence_t gsm_map_gr_ProcessGroupCallSignallingArg_sequence[] = {
  { &hf_gsm_map_gr_uplinkRequest, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL },
  { &hf_gsm_map_gr_uplinkReleaseIndication, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL },
  { &hf_gsm_map_gr_releaseGroupCall, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL },
  { &hf_gsm_map_gr_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_gr_talkerPriority, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_TalkerPriority },
  { &hf_gsm_map_gr_additionalInfo, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdditionalInfo },
  { &hf_gsm_map_gr_emergencyModeResetCommandFlag, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_NULL },
  { &hf_gsm_map_gr_an_APDU  , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AccessNetworkSignalInfo },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_gr_ProcessGroupCallSignallingArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_gr_ProcessGroupCallSignallingArg_sequence, hf_index, ett_gsm_map_gr_ProcessGroupCallSignallingArg);

  return offset;
}


static const value_string gsm_map_gr_RequestedInfo_vals[] = {
  {   0, "anchorMSC-AddressAndASCI-CallReference" },
  {   1, "imsiAndAdditionalInfoAndAdditionalSubscription" },
  { 0, NULL }
};


static int
dissect_gsm_map_gr_RequestedInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_gr_SendGroupCallInfoArg_sequence[] = {
  { &hf_gsm_map_gr_requestedInfo, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_gr_RequestedInfo },
  { &hf_gsm_map_gr_groupId  , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ms_Long_GroupId },
  { &hf_gsm_map_gr_teleservice, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_Ext_TeleserviceCode },
  { &hf_gsm_map_gr_cellId   , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GlobalCellId },
  { &hf_gsm_map_gr_imsi     , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_gr_tmsi     , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_TMSI },
  { &hf_gsm_map_gr_additionalInfo, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdditionalInfo },
  { &hf_gsm_map_gr_talkerPriority, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_gr_TalkerPriority },
  { &hf_gsm_map_gr_cksn     , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Cksn },
  { &hf_gsm_map_gr_extensionContainer, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_gr_SendGroupCallInfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_gr_SendGroupCallInfoArg_sequence, hf_index, ett_gsm_map_gr_SendGroupCallInfoArg);

  return offset;
}


static const ber_sequence_t gsm_map_gr_SendGroupCallInfoRes_sequence[] = {
  { &hf_gsm_map_gr_anchorMSC_Address, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_map_gr_asciCallReference, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ASCI_CallReference },
  { &hf_gsm_map_gr_imsi     , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_map_gr_additionalInfo, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdditionalInfo },
  { &hf_gsm_map_gr_additionalSubscriptions, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_AdditionalSubscriptions },
  { &hf_gsm_map_gr_kc       , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_Kc },
  { &hf_gsm_map_gr_extensionContainer, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_gr_SendGroupCallInfoRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_gr_SendGroupCallInfoRes_sequence, hf_index, ett_gsm_map_gr_SendGroupCallInfoRes);

  return offset;
}


/* --- Module MAP-DialogueInformation --- --- ---                             */


static const ber_sequence_t gsm_map_dialogue_MAP_OpenInfo_sequence[] = {
  { &hf_gsm_map_dialogue_destinationReference, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
  { &hf_gsm_map_dialogue_originationReference, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
  { &hf_gsm_map_dialogue_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_dialogue_MAP_OpenInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_dialogue_MAP_OpenInfo_sequence, hf_index, ett_gsm_map_dialogue_MAP_OpenInfo);

  return offset;
}


static const ber_sequence_t gsm_map_dialogue_MAP_AcceptInfo_sequence[] = {
  { &hf_gsm_map_dialogue_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_dialogue_MAP_AcceptInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_dialogue_MAP_AcceptInfo_sequence, hf_index, ett_gsm_map_dialogue_MAP_AcceptInfo);

  return offset;
}


static const ber_sequence_t gsm_map_dialogue_MAP_CloseInfo_sequence[] = {
  { &hf_gsm_map_dialogue_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_dialogue_MAP_CloseInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_dialogue_MAP_CloseInfo_sequence, hf_index, ett_gsm_map_dialogue_MAP_CloseInfo);

  return offset;
}


static const value_string gsm_map_dialogue_Reason_vals[] = {
  {   0, "noReasonGiven" },
  {   1, "invalidDestinationReference" },
  {   2, "invalidOriginatingReference" },
  { 0, NULL }
};


static int
dissect_gsm_map_dialogue_Reason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}



static int
dissect_gsm_map_dialogue_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);

  return offset;
}


static const ber_sequence_t gsm_map_dialogue_MAP_RefuseInfo_sequence[] = {
  { &hf_gsm_map_dialogue_reason, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_dialogue_Reason },
  { &hf_gsm_map_dialogue_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { &hf_gsm_map_dialogue_alternativeApplicationContext, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_dialogue_OBJECT_IDENTIFIER },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_dialogue_MAP_RefuseInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_dialogue_MAP_RefuseInfo_sequence, hf_index, ett_gsm_map_dialogue_MAP_RefuseInfo);

  return offset;
}



static int
dissect_gsm_map_dialogue_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);

  return offset;
}


static const value_string gsm_map_dialogue_ResourceUnavailableReason_vals[] = {
  {   0, "shortTermResourceLimitation" },
  {   1, "longTermResourceLimitation" },
  { 0, NULL }
};


static int
dissect_gsm_map_dialogue_ResourceUnavailableReason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const value_string gsm_map_dialogue_ProcedureCancellationReason_vals[] = {
  {   0, "handoverCancellation" },
  {   1, "radioChannelRelease" },
  {   2, "networkPathRelease" },
  {   3, "callRelease" },
  {   4, "associatedProcedureFailure" },
  {   5, "tandemDialogueRelease" },
  {   6, "remoteOperationsFailure" },
  { 0, NULL }
};


static int
dissect_gsm_map_dialogue_ProcedureCancellationReason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const value_string gsm_map_dialogue_MAP_UserAbortChoice_vals[] = {
  {   0, "userSpecificReason" },
  {   1, "userResourceLimitation" },
  {   2, "resourceUnavailable" },
  {   3, "applicationProcedureCancellation" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_dialogue_MAP_UserAbortChoice_choice[] = {
  {   0, &hf_gsm_map_dialogue_userSpecificReason, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_NULL },
  {   1, &hf_gsm_map_dialogue_userResourceLimitation, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_NULL },
  {   2, &hf_gsm_map_dialogue_resourceUnavailable, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_ResourceUnavailableReason },
  {   3, &hf_gsm_map_dialogue_applicationProcedureCancellation, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_ProcedureCancellationReason },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_dialogue_MAP_UserAbortChoice(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_dialogue_MAP_UserAbortChoice_choice, hf_index, ett_gsm_map_dialogue_MAP_UserAbortChoice,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_map_dialogue_MAP_UserAbortInfo_sequence[] = {
  { &hf_gsm_map_dialogue_map_UserAbortChoice, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_map_dialogue_MAP_UserAbortChoice },
  { &hf_gsm_map_dialogue_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_dialogue_MAP_UserAbortInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_dialogue_MAP_UserAbortInfo_sequence, hf_index, ett_gsm_map_dialogue_MAP_UserAbortInfo);

  return offset;
}


static const value_string gsm_map_dialogue_MAP_ProviderAbortReason_vals[] = {
  {   0, "abnormalDialogue" },
  {   1, "invalidPDU" },
  { 0, NULL }
};


static int
dissect_gsm_map_dialogue_MAP_ProviderAbortReason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_map_dialogue_MAP_ProviderAbortInfo_sequence[] = {
  { &hf_gsm_map_dialogue_map_ProviderAbortReason, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_dialogue_MAP_ProviderAbortReason },
  { &hf_gsm_map_dialogue_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_dialogue_MAP_ProviderAbortInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_map_dialogue_MAP_ProviderAbortInfo_sequence, hf_index, ett_gsm_map_dialogue_MAP_ProviderAbortInfo);

  return offset;
}


static const value_string gsm_map_dialogue_MAP_DialoguePDU_vals[] = {
  {   0, "map-open" },
  {   1, "map-accept" },
  {   2, "map-close" },
  {   3, "map-refuse" },
  {   4, "map-userAbort" },
  {   5, "map-providerAbort" },
  { 0, NULL }
};

static const ber_choice_t gsm_map_dialogue_MAP_DialoguePDU_choice[] = {
  {   0, &hf_gsm_map_dialogue_map_open, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_MAP_OpenInfo },
  {   1, &hf_gsm_map_dialogue_map_accept, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_MAP_AcceptInfo },
  {   2, &hf_gsm_map_dialogue_map_close, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_MAP_CloseInfo },
  {   3, &hf_gsm_map_dialogue_map_refuse, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_MAP_RefuseInfo },
  {   4, &hf_gsm_map_dialogue_map_userAbort, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_MAP_UserAbortInfo },
  {   5, &hf_gsm_map_dialogue_map_providerAbort, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_map_dialogue_MAP_ProviderAbortInfo },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_map_dialogue_MAP_DialoguePDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_map_dialogue_MAP_DialoguePDU_choice, hf_index, ett_gsm_map_dialogue_MAP_DialoguePDU,
                                 NULL);

  return offset;
}

/*--- PDUs ---*/

static void dissect_gsm_map_dialogue_MAP_DialoguePDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
  asn1_ctx_t asn1_ctx;
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
  dissect_gsm_map_dialogue_MAP_DialoguePDU(FALSE, tvb, 0, &asn1_ctx, tree, hf_gsm_map_dialogue_gsm_map_dialogue_MAP_DialoguePDU_PDU);
}


/* --- Module MAP-LocationServiceOperations --- --- ---                       */


/* --- Module MAP-Group-Call-Operations --- --- ---                           */


/* --- Module MAP-ShortMessageServiceOperations --- --- ---                   */


/* --- Module MAP-SupplementaryServiceOperations --- --- ---                  */


/* --- Module MAP-CallHandlingOperations --- --- ---                          */


/* --- Module MAP-OperationAndMaintenanceOperations --- --- ---               */


/* --- Module MAP-MobileServiceOperations --- --- ---                         */


/* --- Module MAP-Errors --- --- ---                                          */


/* --- Module MAP-Protocol --- --- ---                                        */


/* --- Module DummyMAP --- --- ---                                            */



static int
dissect_gsm_old_InvokeIdType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const value_string gsm_old_GSMMAPOperationLocalvalue_vals[] = {
  {   2, "updateLocation" },
  {   3, "cancelLocation" },
  {   4, "provideRoamingNumber" },
  {   5, "noteSubscriberDataModified" },
  {   6, "resumeCallHandling" },
  {   7, "insertSubscriberData" },
  {   8, "deleteSubscriberData" },
  {   9, "sendParameters" },
  {  10, "registerSS" },
  {  11, "eraseSS" },
  {  12, "activateSS" },
  {  13, "deactivateSS" },
  {  14, "interrogateSS" },
  {  15, "authenticationFailureReport" },
  {  16, "notifySS" },
  {  17, "registerPassword" },
  {  18, "getPassword" },
  {  19, "processUnstructuredSS-Data" },
  {  20, "releaseResources" },
  {  21, "mt-ForwardSM-VGCS" },
  {  22, "sendRoutingInfo" },
  {  23, "updateGprsLocation" },
  {  24, "sendRoutingInfoForGprs" },
  {  25, "failureReport" },
  {  26, "noteMsPresentForGprs" },
  {  28, "performHandover" },
  {  29, "sendEndSignal" },
  {  30, "performSubsequentHandover" },
  {  31, "provideSIWFSNumber" },
  {  32, "sIWFSSignallingModify" },
  {  33, "processAccessSignalling" },
  {  34, "forwardAccessSignalling" },
  {  35, "noteInternalHandover" },
  {  37, "reset" },
  {  38, "forwardCheckSS" },
  {  39, "prepareGroupCall" },
  {  40, "sendGroupCallEndSignal" },
  {  41, "processGroupCallSignalling" },
  {  42, "forwardGroupCallSignalling" },
  {  43, "checkIMEI" },
  {  44, "mt-forwardSM" },
  {  45, "sendRoutingInfoForSM" },
  {  46, "mo-forwardSM" },
  {  47, "reportSM-DeliveryStatus" },
  {  48, "noteSubscriberPresent" },
  {  49, "alertServiceCentreWithoutResult" },
  {  50, "activateTraceMode" },
  {  51, "deactivateTraceMode" },
  {  52, "traceSubscriberActivity" },
  {  54, "beginSubscriberActivity" },
  {  55, "sendIdentification" },
  {  56, "sendAuthenticationInfo" },
  {  57, "restoreData" },
  {  58, "sendIMSI" },
  {  59, "processUnstructuredSS-Request" },
  {  60, "unstructuredSS-Request" },
  {  61, "unstructuredSS-Notify" },
  {  62, "anyTimeSubscriptionInterrogation" },
  {  63, "informServiceCentre" },
  {  64, "alertServiceCentre" },
  {  65, "anyTimeModification" },
  {  66, "readyForSM" },
  {  67, "purgeMS" },
  {  68, "prepareHandover" },
  {  69, "prepareSubsequentHandover" },
  {  70, "provideSubscriberInfo" },
  {  71, "anyTimeInterrogation" },
  {  72, "ss-InvocationNotification" },
  {  73, "setReportingState" },
  {  74, "statusReport" },
  {  75, "remoteUserFree" },
  {  76, "registerCC-Entry" },
  {  77, "eraseCC-Entry" },
  {  78, "secureTransportClass1" },
  {  79, "secureTransportClass2" },
  {  80, "secureTransportClass3" },
  {  81, "secureTransportClass4" },
  {  83, "provideSubscriberLocation" },
  {  84, "sendGroupCallInfo" },
  {  85, "sendRoutingInfoForLCS" },
  {  86, "subscriberLocationReport" },
  {  87, "ist-Alert" },
  {  88, "ist-Command" },
  {  89, "noteMM-Event" },
  { 109, "lcs-PeriodicLocationCancellation" },
  { 110, "lcs-LocationUpdate" },
  { 111, "lcs-PeriodicLocationRequest" },
  { 112, "lcs-AreaEventCancellation" },
  { 113, "lcs-AreaEventReport" },
  { 114, "lcs-AreaEventRequest" },
  { 115, "lcs-MOLR" },
  { 116, "lcs-LocationNotification" },
  { 117, "callDeflection" },
  { 118, "userUserService" },
  { 119, "accessRegisterCCEntry" },
  { 120, "forwardCUG-Info" },
  { 121, "splitMPTY" },
  { 122, "retrieveMPTY" },
  { 123, "holdMPTY" },
  { 124, "buildMPTY" },
  { 125, "forwardChargeAdvice" },
  { 126, "explicitCT" },
  { 0, NULL }
};


static int
dissect_gsm_old_GSMMAPOperationLocalvalue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 174 "../../asn1/gsm_map/gsm_map.cnf"

  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                &opcode);

  col_append_str(actx->pinfo->cinfo, COL_INFO, gsm_map_opr_code(opcode));
  col_append_fstr(actx->pinfo->cinfo, COL_INFO, " ");



  return offset;
}



static int
dissect_gsm_old_OperationLocalvalue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_gsm_old_GSMMAPOperationLocalvalue(implicit_tag, tvb, offset, actx, tree, hf_index);

  return offset;
}



static int
dissect_gsm_old_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);

  return offset;
}


static const value_string gsm_old_MAP_OPERATION_vals[] = {
  {   0, "localValue" },
  {   1, "globalValue" },
  { 0, NULL }
};

static const ber_choice_t gsm_old_MAP_OPERATION_choice[] = {
  {   0, &hf_gsm_old_localValue  , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_old_OperationLocalvalue },
  {   1, &hf_gsm_old_globalValue , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_gsm_old_OBJECT_IDENTIFIER },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_MAP_OPERATION(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_old_MAP_OPERATION_choice, hf_index, ett_gsm_old_MAP_OPERATION,
                                 NULL);

  return offset;
}



static int
dissect_gsm_old_InvokeParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 161 "../../asn1/gsm_map/gsm_map.cnf"
	offset = dissect_invokeData(tree, tvb, offset, actx);



  return offset;
}


static const ber_sequence_t gsm_old_Invoke_sequence[] = {
  { &hf_gsm_old_invokeID    , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_old_InvokeIdType },
  { &hf_gsm_old_linkedID    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_old_InvokeIdType },
  { &hf_gsm_old_opCode      , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_old_MAP_OPERATION },
  { &hf_gsm_old_invokeparameter, BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_InvokeParameter },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_Invoke(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_Invoke_sequence, hf_index, ett_gsm_old_Invoke);

  return offset;
}



static int
dissect_gsm_old_ReturnResultParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 164 "../../asn1/gsm_map/gsm_map.cnf"
	offset = dissect_returnResultData(tree, tvb, offset, actx);



  return offset;
}


static const ber_sequence_t gsm_old_T_resultretres_sequence[] = {
  { &hf_gsm_old_opCode      , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_old_MAP_OPERATION },
  { &hf_gsm_old_returnparameter, BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_ReturnResultParameter },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_T_resultretres(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_T_resultretres_sequence, hf_index, ett_gsm_old_T_resultretres);

  return offset;
}


static const ber_sequence_t gsm_old_ReturnResult_sequence[] = {
  { &hf_gsm_old_invokeID    , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_old_InvokeIdType },
  { &hf_gsm_old_resultretres, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_T_resultretres },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_ReturnResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_ReturnResult_sequence, hf_index, ett_gsm_old_ReturnResult);

  return offset;
}


const value_string gsm_old_GSMMAPLocalErrorcode_vals[] = {
  {   1, "unknownSubscriber" },
  {   2, "unknownBaseStation" },
  {   3, "unknownMSC" },
  {   4, "secureTransportError" },
  {   5, "unidentifiedSubscriber" },
  {   6, "absentSubscriberSM" },
  {   7, "unknownEquipment" },
  {   8, "roamingNotAllowed" },
  {   9, "illegalSubscriber" },
  {  10, "bearerServiceNotProvisioned" },
  {  11, "teleserviceNotProvisioned" },
  {  12, "illegalEquipment" },
  {  13, "callBarred" },
  {  14, "forwardingViolation" },
  {  15, "cug-Reject" },
  {  16, "illegalSS-Operation" },
  {  17, "ss-ErrorStatus" },
  {  18, "ss-NotAvailable" },
  {  19, "ss-SubscriptionViolatio" },
  {  20, "ss-Incompatibility" },
  {  21, "facilityNotSupported" },
  {  22, "ongoingGroupCall" },
  {  23, "invalidTargetBaseStation" },
  {  24, "noRadioResourceAvailable" },
  {  25, "noHandoverNumberAvailable" },
  {  26, "subsequentHandoverFailure" },
  {  27, "absentSubscriber" },
  {  28, "incompatibleTerminal" },
  {  29, "shortTermDenial" },
  {  30, "longTermDenial" },
  {  31, "subscriberBusyForMT-SMS" },
  {  32, "sm-DeliveryFailure" },
  {  33, "messageWaitingListFull" },
  {  34, "systemFailure" },
  {  35, "dataMissing" },
  {  36, "unexpectedDataValue" },
  {  37, "pw-RegistrationFailur" },
  {  38, "negativePW-Check" },
  {  39, "noRoamingNumberAvailable" },
  {  40, "tracingBufferFull" },
  {  42, "targetCellOutsideGroupCallArea" },
  {  43, "numberOfPW-AttemptsViolation" },
  {  44, "numberChanged" },
  {  45, "busySubscriber" },
  {  46, "noSubscriberReply" },
  {  47, "forwardingFailed" },
  {  48, "or-NotAllowed" },
  {  49, "ati-NotAllowed" },
  {  50, "noGroupCallNumberAvailable" },
  {  51, "resourceLimitation" },
  {  52, "unauthorizedRequestingNetwork" },
  {  53, "unauthorizedLCSClient" },
  {  54, "positionMethodFailure" },
  {  58, "unknownOrUnreachableLCSClient" },
  {  59, "mm-EventNotSupported" },
  {  60, "atsi-NotAllowed" },
  {  61, "atm-NotAllowed" },
  {  62, "informationNotAvailabl" },
  {  71, "unknownAlphabe" },
  {  72, "ussd-Busy" },
  { 0, NULL }
};


int
dissect_gsm_old_GSMMAPLocalErrorcode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                &errorCode);

  return offset;
}



static int
dissect_gsm_old_LocalErrorcode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_gsm_old_GSMMAPLocalErrorcode(implicit_tag, tvb, offset, actx, tree, hf_index);

  return offset;
}


static const value_string gsm_old_MAP_ERROR_vals[] = {
  {   0, "localValue" },
  {   1, "globalValue" },
  { 0, NULL }
};

static const ber_choice_t gsm_old_MAP_ERROR_choice[] = {
  {   0, &hf_gsm_old_localValue_01, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_old_LocalErrorcode },
  {   1, &hf_gsm_old_globalValue , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_gsm_old_OBJECT_IDENTIFIER },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_MAP_ERROR(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_old_MAP_ERROR_choice, hf_index, ett_gsm_old_MAP_ERROR,
                                 NULL);

  return offset;
}



static int
dissect_gsm_old_ReturnErrorParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 167 "../../asn1/gsm_map/gsm_map.cnf"
	offset = dissect_returnErrorData(tree, tvb, offset, actx);



  return offset;
}


static const ber_sequence_t gsm_old_ReturnError_sequence[] = {
  { &hf_gsm_old_invokeID    , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_old_InvokeIdType },
  { &hf_gsm_old_errorCode   , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_old_MAP_ERROR },
  { &hf_gsm_old_parameter   , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_ReturnErrorParameter },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_ReturnError(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_ReturnError_sequence, hf_index, ett_gsm_old_ReturnError);

  return offset;
}



static int
dissect_gsm_old_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);

  return offset;
}


static const value_string gsm_old_T_invokeIDRej_vals[] = {
  {   0, "derivable" },
  {   1, "not-derivable" },
  { 0, NULL }
};

static const ber_choice_t gsm_old_T_invokeIDRej_choice[] = {
  {   0, &hf_gsm_old_derivable   , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_old_InvokeIdType },
  {   1, &hf_gsm_old_not_derivable, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_gsm_old_NULL },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_T_invokeIDRej(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_old_T_invokeIDRej_choice, hf_index, ett_gsm_old_T_invokeIDRej,
                                 NULL);

  return offset;
}


static const value_string gsm_old_GeneralProblem_vals[] = {
  {   0, "unrecognizedComponent" },
  {   1, "mistypedComponent" },
  {   2, "badlyStructuredComponent" },
  { 0, NULL }
};


static int
dissect_gsm_old_GeneralProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const value_string gsm_old_InvokeProblem_vals[] = {
  {   0, "duplicateInvokeID" },
  {   1, "unrecognizedOperation" },
  {   2, "mistypedParameter" },
  {   3, "resourceLimitation" },
  {   4, "initiatingRelease" },
  {   5, "unrecognizedLinkedID" },
  {   6, "linkedResponseUnexpected" },
  {   7, "unexpectedLinkedOperation" },
  { 0, NULL }
};


static int
dissect_gsm_old_InvokeProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const value_string gsm_old_ReturnResultProblem_vals[] = {
  {   0, "unrecognizedInvokeID" },
  {   1, "returnResultUnexpected" },
  {   2, "mistypedParameter" },
  { 0, NULL }
};


static int
dissect_gsm_old_ReturnResultProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const value_string gsm_old_ReturnErrorProblem_vals[] = {
  {   0, "unrecognizedInvokeID" },
  {   1, "returnErrorUnexpected" },
  {   2, "unrecognizedError" },
  {   3, "unexpectedError" },
  {   4, "mistypedParameter" },
  { 0, NULL }
};


static int
dissect_gsm_old_ReturnErrorProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const value_string gsm_old_T_problem_vals[] = {
  {   0, "generalProblem" },
  {   1, "invokeProblem" },
  {   2, "returnResultProblem" },
  {   3, "returnErrorProblem" },
  { 0, NULL }
};

static const ber_choice_t gsm_old_T_problem_choice[] = {
  {   0, &hf_gsm_old_generalProblem, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_old_GeneralProblem },
  {   1, &hf_gsm_old_invokeProblem, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_old_InvokeProblem },
  {   2, &hf_gsm_old_returnResultProblem, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_old_ReturnResultProblem },
  {   3, &hf_gsm_old_returnErrorProblem, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_old_ReturnErrorProblem },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_T_problem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_old_T_problem_choice, hf_index, ett_gsm_old_T_problem,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_old_Reject_sequence[] = {
  { &hf_gsm_old_invokeIDRej , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_old_T_invokeIDRej },
  { &hf_gsm_old_problem     , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_old_T_problem },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_Reject(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_Reject_sequence, hf_index, ett_gsm_old_Reject);

  return offset;
}


static const value_string gsm_old_Component_vals[] = {
  {   1, "invoke" },
  {   2, "returnResultLast" },
  {   3, "returnError" },
  {   4, "reject" },
  {   7, "returnResultNotLast" },
  { 0, NULL }
};

static const ber_choice_t gsm_old_Component_choice[] = {
  {   1, &hf_gsm_old_invoke      , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_old_Invoke },
  {   2, &hf_gsm_old_returnResultLast, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_old_ReturnResult },
  {   3, &hf_gsm_old_returnError , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_old_ReturnError },
  {   4, &hf_gsm_old_reject      , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_old_Reject },
  {   7, &hf_gsm_old_returnResultNotLast, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_gsm_old_ReturnResult },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_Component(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_old_Component_choice, hf_index, ett_gsm_old_Component,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_old_Bss_APDU_sequence[] = {
  { &hf_gsm_old_protocolId  , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ProtocolId },
  { &hf_gsm_old_signalInfo  , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo },
  { &hf_gsm_old_extensionContainer, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_Bss_APDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 638 "../../asn1/gsm_map/gsm_map.cnf"
 guint8		octet;
 guint8		length;
 tvbuff_t	*next_tvb;
 proto_tree *subtree;
/*
ETS 300 599: December 2000 (GSM 09.02 version 4.19.1)
5.6.9.1 BSS-apdu
This parameter includes one or two concatenated complete 08.06 messages, as described in GSM 03.09
and GSM 09.10. The Protocol ID indicates that the message or messages are according to GSM 08.06.
For the coding of the messages see GSM 08.06 and GSM 08.08.
*/
 ProtocolId = 0xffffffff;
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_Bss_APDU_sequence, hf_index, ett_gsm_old_Bss_APDU);

if (!actx->value_ptr)
	return offset;
 subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_externalsignalinfo);
 switch (ProtocolId){
	case 1:
	/* gsm-0408 */
		/* As per comment abowe Individual IE:(s) will be found here in TLV format
		 * Unfortunatly a branch for each IE must be made to call the apropriate
		 * function
		 */
		 /* Get tag */
		 octet = tvb_get_guint8(actx->value_ptr,0);
		 proto_tree_add_item(subtree, hf_gsm_map_ie_tag, actx->value_ptr, 0,1,FALSE);
		 /* get length */
		 length = tvb_get_guint8(actx->value_ptr,1);
		 proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 1,1,FALSE);
		 /* Branch on tag */
		 switch(octet){
		 case 4:
			/* Dissect the data part */
			de_bearer_cap(actx->value_ptr, subtree, actx->pinfo, 2, length, NULL, 0);
			/* TODO: There may be more than one IE */
			break;
		 default:
			proto_tree_add_text(subtree, actx->value_ptr, 0, length, "If you want this decoded send the packet to Wireshark-dev");
			break;
		}/* switch(octet) */
		break;
	case 2:
 		/* gsm-0806 */
		octet = tvb_get_guint8(actx->value_ptr,0);
		/* Discrimination parameter */
		proto_tree_add_item(subtree, hf_gsm_map_disc_par, actx->value_ptr, 0,1,FALSE);
		if ( octet == 0) {/* DISCRIMINATION TS 48 006(GSM 08.06 version 5.3.0) */
			/* Strip off discrimination and length */
			proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 1,1,FALSE);
			next_tvb = tvb_new_subset_remaining(actx->value_ptr, 2);
			dissect_bssmap(next_tvb, actx->pinfo, subtree);
		}else if(octet==1){
			proto_tree_add_item(subtree, hf_gsm_map_dlci, actx->value_ptr, 1,1,FALSE);
			proto_tree_add_item(subtree, hf_gsm_map_len, actx->value_ptr, 2,1,FALSE);
			next_tvb = tvb_new_subset_remaining(actx->value_ptr, 3);
			call_dissector(dtap_handle, next_tvb, actx->pinfo, subtree);
		}
		break;
	case 3:
	/* gsm-BSSMAP -- Value 3 is reserved and must not be used*/
		octet = tvb_get_guint8(actx->value_ptr,0);
		length = tvb_get_guint8(actx->value_ptr,1);
		if ( octet == 0) {/* DISCRIMINATION TS 48 006 */
			next_tvb = tvb_new_subset_remaining(actx->value_ptr, 2);
			dissect_bssmap(next_tvb, actx->pinfo, subtree);
		}
		break;
	/* ets-300102-1 (~Q.931 ) */
	case 4:
		octet = tvb_get_guint8(actx->value_ptr,0);
		length = tvb_get_guint8(actx->value_ptr,1);
		if ( octet == 4 )
			dissect_q931_bearer_capability_ie(actx->value_ptr, 2, length, subtree);
		break;
	default:
		break;
	}/*switch (ProtocolId)*/



  return offset;
}



static int
dissect_gsm_old_CallDirection(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_old_ProvideSIWFSNumberArg_sequence[] = {
  { &hf_gsm_old_gsm_BearerCapability, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo },
  { &hf_gsm_old_isdn_BearerCapability, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo },
  { &hf_gsm_old_call_Direction, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_old_CallDirection },
  { &hf_gsm_old_b_Subscriber_Address, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_old_chosenChannel, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo },
  { &hf_gsm_old_lowerLayerCompatibility, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo },
  { &hf_gsm_old_highLayerCompatibility, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo },
  { &hf_gsm_old_extensionContainer, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_ProvideSIWFSNumberArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_ProvideSIWFSNumberArg_sequence, hf_index, ett_gsm_old_ProvideSIWFSNumberArg);

  return offset;
}


static const ber_sequence_t gsm_old_ProvideSIWFSNumberRes_sequence[] = {
  { &hf_gsm_old_sIWFSNumber , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_old_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_ProvideSIWFSNumberRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_ProvideSIWFSNumberRes_sequence, hf_index, ett_gsm_old_ProvideSIWFSNumberRes);

  return offset;
}


static const ber_sequence_t gsm_old_PurgeMSArgV2_sequence[] = {
  { &hf_gsm_old_imsi        , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_old_vlr_Number  , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_PurgeMSArgV2(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_PurgeMSArgV2_sequence, hf_index, ett_gsm_old_PurgeMSArgV2);

  return offset;
}


static const ber_sequence_t gsm_old_PrepareHO_ArgOld_sequence[] = {
  { &hf_gsm_old_targetCellId, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_GlobalCellId },
  { &hf_gsm_old_ho_NumberNotRequired, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_NULL },
  { &hf_gsm_old_bss_APDU    , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_Bss_APDU },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_PrepareHO_ArgOld(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_PrepareHO_ArgOld_sequence, hf_index, ett_gsm_old_PrepareHO_ArgOld);

  return offset;
}


static const ber_sequence_t gsm_old_PrepareHO_ResOld_sequence[] = {
  { &hf_gsm_old_handoverNumber, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_old_bss_APDU    , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_Bss_APDU },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_PrepareHO_ResOld(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_PrepareHO_ResOld_sequence, hf_index, ett_gsm_old_PrepareHO_ResOld);

  return offset;
}



static int
dissect_gsm_old_RAND(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_old_SRES(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_old_Kc(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_old_SendAuthenticationInfoResOld_item_sequence[] = {
  { &hf_gsm_old_rand        , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_old_RAND },
  { &hf_gsm_old_sres        , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_old_SRES },
  { &hf_gsm_old_kc          , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_old_Kc },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_SendAuthenticationInfoResOld_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_SendAuthenticationInfoResOld_item_sequence, hf_index, ett_gsm_old_SendAuthenticationInfoResOld_item);

  return offset;
}


static const ber_sequence_t gsm_old_SendAuthenticationInfoResOld_sequence_of[1] = {
  { &hf_gsm_old_SendAuthenticationInfoResOld_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_old_SendAuthenticationInfoResOld_item },
};

static int
dissect_gsm_old_SendAuthenticationInfoResOld(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_old_SendAuthenticationInfoResOld_sequence_of, hf_index, ett_gsm_old_SendAuthenticationInfoResOld);

  return offset;
}


static const ber_sequence_t gsm_old_AuthenticationTriplet_v2_sequence[] = {
  { &hf_gsm_old_rand        , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_old_RAND },
  { &hf_gsm_old_sres        , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_old_SRES },
  { &hf_gsm_old_kc          , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_old_Kc },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_AuthenticationTriplet_v2(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_AuthenticationTriplet_v2_sequence, hf_index, ett_gsm_old_AuthenticationTriplet_v2);

  return offset;
}


static const ber_sequence_t gsm_old_TripletListold_sequence_of[1] = {
  { &hf_gsm_old_TripletListold_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_old_AuthenticationTriplet_v2 },
};

static int
dissect_gsm_old_TripletListold(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_old_TripletListold_sequence_of, hf_index, ett_gsm_old_TripletListold);

  return offset;
}


static const ber_sequence_t gsm_old_SendIdentificationResV2_sequence[] = {
  { &hf_gsm_old_imsi        , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_old_tripletList , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_TripletListold },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_SendIdentificationResV2(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_SendIdentificationResV2_sequence, hf_index, ett_gsm_old_SendIdentificationResV2);

  return offset;
}


static const ber_sequence_t gsm_old_SIWFSSignallingModifyArg_sequence[] = {
  { &hf_gsm_old_channelType , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo },
  { &hf_gsm_old_chosenChannel, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo },
  { &hf_gsm_old_extensionContainer, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_SIWFSSignallingModifyArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_SIWFSSignallingModifyArg_sequence, hf_index, ett_gsm_old_SIWFSSignallingModifyArg);

  return offset;
}


static const ber_sequence_t gsm_old_SIWFSSignallingModifyRes_sequence[] = {
  { &hf_gsm_old_channelType , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo },
  { &hf_gsm_old_extensionContainer, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExtensionContainer },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_SIWFSSignallingModifyRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_SIWFSSignallingModifyRes_sequence, hf_index, ett_gsm_old_SIWFSSignallingModifyRes);

  return offset;
}



int
dissect_gsm_old_NewPassword(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
                                            actx, tree, tvb, offset, hf_index,
                                            NULL);

  return offset;
}


const value_string gsm_old_GetPasswordArg_vals[] = {
  {   0, "enterPW" },
  {   1, "enterNewPW" },
  {   2, "enterNewPW-Again" },
  { 0, NULL }
};


int
dissect_gsm_old_GetPasswordArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}



int
dissect_gsm_old_CurrentPassword(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
                                            actx, tree, tvb, offset, hf_index,
                                            NULL);

  return offset;
}



static int
dissect_gsm_old_SecurityParametersIndex(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_old_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const value_string gsm_old_OperationCode_vals[] = {
  {   0, "localValue" },
  {   1, "globalValue" },
  { 0, NULL }
};

static const ber_choice_t gsm_old_OperationCode_choice[] = {
  {   0, &hf_gsm_old_localValue_02, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_old_INTEGER },
  {   1, &hf_gsm_old_globalValue , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_gsm_old_OBJECT_IDENTIFIER },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_OperationCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_old_OperationCode_choice, hf_index, ett_gsm_old_OperationCode,
                                 NULL);

  return offset;
}


static const value_string gsm_old_ErrorCode_vals[] = {
  {   0, "localValue" },
  {   1, "globalValue" },
  { 0, NULL }
};

static const ber_choice_t gsm_old_ErrorCode_choice[] = {
  {   0, &hf_gsm_old_localValue_02, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gsm_old_INTEGER },
  {   1, &hf_gsm_old_globalValue , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_gsm_old_OBJECT_IDENTIFIER },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_ErrorCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_old_ErrorCode_choice, hf_index, ett_gsm_old_ErrorCode,
                                 NULL);

  return offset;
}


static const value_string gsm_old_OriginalComponentIdentifier_vals[] = {
  {   0, "operationCode" },
  {   1, "errorCode" },
  {   2, "userInfo" },
  { 0, NULL }
};

static const ber_choice_t gsm_old_OriginalComponentIdentifier_choice[] = {
  {   0, &hf_gsm_old_operationCode, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_old_OperationCode },
  {   1, &hf_gsm_old_errorCode_01, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_old_ErrorCode },
  {   2, &hf_gsm_old_userInfo    , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_old_NULL },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_OriginalComponentIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_old_OriginalComponentIdentifier_choice, hf_index, ett_gsm_old_OriginalComponentIdentifier,
                                 NULL);

  return offset;
}



static int
dissect_gsm_old_InitialisationVector(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_old_SecurityHeader_sequence[] = {
  { &hf_gsm_old_securityParametersIndex, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_old_SecurityParametersIndex },
  { &hf_gsm_old_originalComponentIdentifier, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_old_OriginalComponentIdentifier },
  { &hf_gsm_old_initialisationVector, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_InitialisationVector },
  { NULL, 0, 0, 0, NULL }
};

int
dissect_gsm_old_SecurityHeader(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_SecurityHeader_sequence, hf_index, ett_gsm_old_SecurityHeader);

  return offset;
}



int
dissect_gsm_old_ProtectedPayload(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_old_SecureTransportArg_sequence[] = {
  { &hf_gsm_old_securityHeader, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_old_SecurityHeader },
  { &hf_gsm_old_protectedPayload, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_ProtectedPayload },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_SecureTransportArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_SecureTransportArg_sequence, hf_index, ett_gsm_old_SecureTransportArg);

  return offset;
}


static const ber_sequence_t gsm_old_SecureTransportErrorParam_sequence[] = {
  { &hf_gsm_old_securityHeader, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_old_SecurityHeader },
  { &hf_gsm_old_protectedPayload, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_ProtectedPayload },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_SecureTransportErrorParam(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_SecureTransportErrorParam_sequence, hf_index, ett_gsm_old_SecureTransportErrorParam);

  return offset;
}


static const ber_sequence_t gsm_old_SecureTransportRes_sequence[] = {
  { &hf_gsm_old_securityHeader, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gsm_old_SecurityHeader },
  { &hf_gsm_old_protectedPayload, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_ProtectedPayload },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_SecureTransportRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_SecureTransportRes_sequence, hf_index, ett_gsm_old_SecureTransportRes);

  return offset;
}



static int
dissect_gsm_old_Category(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_old_OCTET_STRING_SIZE_1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_old_T_operatorSS_Code_sequence_of[1] = {
  { &hf_gsm_old_operatorSS_Code_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_old_OCTET_STRING_SIZE_1 },
};

static int
dissect_gsm_old_T_operatorSS_Code(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_old_T_operatorSS_Code_sequence_of, hf_index, ett_gsm_old_T_operatorSS_Code);

  return offset;
}


static const ber_sequence_t gsm_old_PlmnContainer_U_sequence[] = {
  { &hf_gsm_old_msisdn      , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_old_category    , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_old_Category },
  { &hf_gsm_old_basicService, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_BasicServiceCode },
  { &hf_gsm_old_operatorSS_Code, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_old_T_operatorSS_Code },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_PlmnContainer_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_PlmnContainer_U_sequence, hf_index, ett_gsm_old_PlmnContainer_U);

  return offset;
}



static int
dissect_gsm_old_PlmnContainer(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
                                      hf_index, BER_CLASS_PRI, 2, TRUE, dissect_gsm_old_PlmnContainer_U);

  return offset;
}


static const value_string gsm_old_SM_RP_DAold_vals[] = {
  {   0, "imsi" },
  {   1, "lmsi" },
  {   4, "serviceCentreAddressDA" },
  {   5, "noSM-RP-DA" },
  { 0, NULL }
};

static const ber_choice_t gsm_old_SM_RP_DAold_choice[] = {
  {   0, &hf_gsm_old_imsi        , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
  {   1, &hf_gsm_old_lmsi        , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_LMSI },
  {   4, &hf_gsm_old_serviceCentreAddressDA, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
  {   5, &hf_gsm_old_noSM_RP_DA  , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_old_NULL },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_SM_RP_DAold(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_old_SM_RP_DAold_choice, hf_index, ett_gsm_old_SM_RP_DAold,
                                 NULL);

  return offset;
}



static int
dissect_gsm_old_T_msisdn(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 287 "../../asn1/gsm_map/gsm_map.cnf"
actx->pinfo->p2p_dir = P2P_DIR_RECV;
   offset = dissect_gsm_map_ISDN_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);




  return offset;
}



static int
dissect_gsm_old_T_serviceCentreAddressOA(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 279 "../../asn1/gsm_map/gsm_map.cnf"
	actx->pinfo->p2p_dir = P2P_DIR_SENT;
  offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);




  return offset;
}


static const value_string gsm_old_SM_RP_OAold_vals[] = {
  {   2, "msisdn" },
  {   4, "serviceCentreAddressOA" },
  {   5, "noSM-RP-OA" },
  { 0, NULL }
};

static const ber_choice_t gsm_old_SM_RP_OAold_choice[] = {
  {   2, &hf_gsm_old_msisdn_01   , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_old_T_msisdn },
  {   4, &hf_gsm_old_serviceCentreAddressOA, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_old_T_serviceCentreAddressOA },
  {   5, &hf_gsm_old_noSM_RP_OA  , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_old_NULL },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_SM_RP_OAold(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_old_SM_RP_OAold_choice, hf_index, ett_gsm_old_SM_RP_OAold,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_old_ForwardSM_Arg_sequence[] = {
  { &hf_gsm_old_sm_RP_DA    , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_old_SM_RP_DAold },
  { &hf_gsm_old_sm_RP_OA    , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_old_SM_RP_OAold },
  { &hf_gsm_old_sm_RP_UI    , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_SignalInfo },
  { &hf_gsm_old_moreMessagesToSend, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_old_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_ForwardSM_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 310 "../../asn1/gsm_map/gsm_map.cnf"

	/* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_ForwardSM_Arg_sequence, hf_index, ett_gsm_old_ForwardSM_Arg);


	if (!actx->value_ptr)
		return offset;
	dissector_try_uint(sms_dissector_table, 0, actx->value_ptr, actx->pinfo, top_tree);



  return offset;
}


static const ber_sequence_t gsm_old_SendRoutingInfoArgV2_sequence[] = {
  { &hf_gsm_old_msisdn      , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_old_cug_CheckInfo, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CUG_CheckInfo },
  { &hf_gsm_old_numberOfForwarding, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_NumberOfForwarding },
  { &hf_gsm_old_networkSignalInfo, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ExternalSignalInfo },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_SendRoutingInfoArgV2(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_SendRoutingInfoArgV2_sequence, hf_index, ett_gsm_old_SendRoutingInfoArgV2);

  return offset;
}


static const ber_sequence_t gsm_old_SendRoutingInfoResV2_sequence[] = {
  { &hf_gsm_old_imsi        , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_old_routingInfo , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ch_RoutingInfo },
  { &hf_gsm_old_cug_CheckInfo, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gsm_map_ch_CUG_CheckInfo },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_SendRoutingInfoResV2(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_SendRoutingInfoResV2_sequence, hf_index, ett_gsm_old_SendRoutingInfoResV2);

  return offset;
}


static const ber_sequence_t gsm_old_BeginSubscriberActivityArg_sequence[] = {
  { &hf_gsm_old_imsi        , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_IMSI },
  { &hf_gsm_old_originatingEntityNumber, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_old_msisdn_02   , BER_CLASS_PRI, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_old_BeginSubscriberActivityArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_old_BeginSubscriberActivityArg_sequence, hf_index, ett_gsm_old_BeginSubscriberActivityArg);

  return offset;
}


/* --- Module SS-DataTypes --- --- ---                                        */



static int
dissect_gsm_ss_SS_UserData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
                                            actx, tree, tvb, offset, hf_index,
                                            NULL);

  return offset;
}



static int
dissect_gsm_ss_SS_Notification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_ss_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);

  return offset;
}


static const value_string gsm_ss_CallOnHold_Indicator_vals[] = {
  {   0, "callRetrieved" },
  {   1, "callOnHold" },
  { 0, NULL }
};


static int
dissect_gsm_ss_CallOnHold_Indicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const value_string gsm_ss_ECT_CallState_vals[] = {
  {   0, "alerting" },
  {   1, "active" },
  { 0, NULL }
};


static int
dissect_gsm_ss_ECT_CallState(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_ss_RemotePartyNumber_sequence[] = {
  { &hf_gsm_ss_partyNumber  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_ss_partyNumberSubaddress, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_SubaddressString },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_RemotePartyNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_RemotePartyNumber_sequence, hf_index, ett_gsm_ss_RemotePartyNumber);

  return offset;
}


static const value_string gsm_ss_RDN_vals[] = {
  {   0, "presentationAllowedAddress" },
  {   1, "presentationRestricted" },
  {   2, "numberNotAvailableDueToInterworking" },
  {   3, "presentationRestrictedAddress" },
  { 0, NULL }
};

static const ber_choice_t gsm_ss_RDN_choice[] = {
  {   0, &hf_gsm_ss_presentationAllowedAddress, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_ss_RemotePartyNumber },
  {   1, &hf_gsm_ss_presentationRestricted, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL },
  {   2, &hf_gsm_ss_numberNotAvailableDueToInterworking, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL },
  {   3, &hf_gsm_ss_presentationRestrictedAddress, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_ss_RemotePartyNumber },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_RDN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_ss_RDN_choice, hf_index, ett_gsm_ss_RDN,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_ss_ECT_Indicator_sequence[] = {
  { &hf_gsm_ss_ect_CallState, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_ss_ECT_CallState },
  { &hf_gsm_ss_rdn          , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_ss_RDN },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_ECT_Indicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_ECT_Indicator_sequence, hf_index, ett_gsm_ss_ECT_Indicator);

  return offset;
}



static int
dissect_gsm_ss_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const ber_sequence_t gsm_ss_NameSet_sequence[] = {
  { &hf_gsm_ss_dataCodingScheme, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_USSD_DataCodingScheme },
  { &hf_gsm_ss_lengthInCharacters, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_ss_INTEGER },
  { &hf_gsm_ss_nameString   , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_USSD_String },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_NameSet(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_NameSet_sequence, hf_index, ett_gsm_ss_NameSet);

  return offset;
}


static const value_string gsm_ss_Name_vals[] = {
  {   0, "namePresentationAllowed" },
  {   1, "presentationRestricted" },
  {   2, "nameUnavailable" },
  {   3, "namePresentationRestricted" },
  { 0, NULL }
};

static const ber_choice_t gsm_ss_Name_choice[] = {
  {   0, &hf_gsm_ss_namePresentationAllowed, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_ss_NameSet },
  {   1, &hf_gsm_ss_presentationRestricted, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL },
  {   2, &hf_gsm_ss_nameUnavailable, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL },
  {   3, &hf_gsm_ss_namePresentationRestricted, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_ss_NameSet },
  { 0, NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_Name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_choice(actx, tree, tvb, offset,
                                 gsm_ss_Name_choice, hf_index, ett_gsm_ss_Name,
                                 NULL);

  return offset;
}


static const ber_sequence_t gsm_ss_NameIndicator_sequence[] = {
  { &hf_gsm_ss_callingName  , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gsm_ss_Name },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_NameIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_NameIndicator_sequence, hf_index, ett_gsm_ss_NameIndicator);

  return offset;
}


static const value_string gsm_ss_Multicall_Indicator_vals[] = {
  {   0, "nbr-SNexceeded" },
  {   1, "nbr-Userexceeded" },
  { 0, NULL }
};


static int
dissect_gsm_ss_Multicall_Indicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_ss_NotifySS_Arg_sequence[] = {
  { &hf_gsm_ss_ss_Code      , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_ss_ss_Status    , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_SS_Status },
  { &hf_gsm_ss_ss_Notification, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_SS_Notification },
  { &hf_gsm_ss_callIsWaiting_Indicator, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL },
  { &hf_gsm_ss_callOnHold_Indicator, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_CallOnHold_Indicator },
  { &hf_gsm_ss_mpty_Indicator, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL },
  { &hf_gsm_ss_cug_Index    , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CUG_Index },
  { &hf_gsm_ss_clirSuppressionRejected, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL },
  { &hf_gsm_ss_ect_Indicator, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_ECT_Indicator },
  { &hf_gsm_ss_nameIndicator, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NameIndicator },
  { &hf_gsm_ss_ccbs_Feature , BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ss_CCBS_Feature },
  { &hf_gsm_ss_alertingPattern, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AlertingPattern },
  { &hf_gsm_ss_multicall_Indicator, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_Multicall_Indicator },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_NotifySS_Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_NotifySS_Arg_sequence, hf_index, ett_gsm_ss_NotifySS_Arg);

  return offset;
}



static int
dissect_gsm_ss_E1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_ss_E2(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_ss_E3(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_ss_E4(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_ss_E5(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_ss_E6(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}



static int
dissect_gsm_ss_E7(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                                NULL);

  return offset;
}


static const ber_sequence_t gsm_ss_ChargingInformation_sequence[] = {
  { &hf_gsm_ss_e1           , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_E1 },
  { &hf_gsm_ss_e2           , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_E2 },
  { &hf_gsm_ss_e3           , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_E3 },
  { &hf_gsm_ss_e4           , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_E4 },
  { &hf_gsm_ss_e5           , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_E5 },
  { &hf_gsm_ss_e6           , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_E6 },
  { &hf_gsm_ss_e7           , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_E7 },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_ChargingInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_ChargingInformation_sequence, hf_index, ett_gsm_ss_ChargingInformation);

  return offset;
}


static const ber_sequence_t gsm_ss_ForwardChargeAdviceArg_sequence[] = {
  { &hf_gsm_ss_ss_Code      , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_SS_Code },
  { &hf_gsm_ss_chargingInformation, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_ss_ChargingInformation },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_ForwardChargeAdviceArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_ForwardChargeAdviceArg_sequence, hf_index, ett_gsm_ss_ForwardChargeAdviceArg);

  return offset;
}


static const ber_sequence_t gsm_ss_ForwardCUG_InfoArg_sequence[] = {
  { &hf_gsm_ss_cug_Index    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_CUG_Index },
  { &hf_gsm_ss_suppressPrefCUG, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL },
  { &hf_gsm_ss_suppressOA   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_ForwardCUG_InfoArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_ForwardCUG_InfoArg_sequence, hf_index, ett_gsm_ss_ForwardCUG_InfoArg);

  return offset;
}


static const ber_sequence_t gsm_ss_AccessRegisterCCEntryArg_sequence[] = {
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_AccessRegisterCCEntryArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_AccessRegisterCCEntryArg_sequence, hf_index, ett_gsm_ss_AccessRegisterCCEntryArg);

  return offset;
}


static const ber_sequence_t gsm_ss_CallDeflectionArg_sequence[] = {
  { &hf_gsm_ss_deflectedToNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
  { &hf_gsm_ss_deflectedToSubaddress, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_SubaddressString },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_CallDeflectionArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_CallDeflectionArg_sequence, hf_index, ett_gsm_ss_CallDeflectionArg);

  return offset;
}


static const value_string gsm_ss_UUS_Service_vals[] = {
  {   1, "uUS1" },
  {   2, "uUS2" },
  {   3, "uUS3" },
  { 0, NULL }
};


static int
dissect_gsm_ss_UUS_Service(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}



static int
dissect_gsm_ss_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);

  return offset;
}


static const ber_sequence_t gsm_ss_UserUserServiceArg_sequence[] = {
  { &hf_gsm_ss_uUS_Service  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_ss_UUS_Service },
  { &hf_gsm_ss_uUS_Required , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_ss_BOOLEAN },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_UserUserServiceArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_UserUserServiceArg_sequence, hf_index, ett_gsm_ss_UserUserServiceArg);

  return offset;
}


static const ber_sequence_t gsm_ss_LocationNotificationArg_sequence[] = {
  { &hf_gsm_ss_notificationType, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NotificationToMSUser },
  { &hf_gsm_ss_locationType , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LocationType },
  { &hf_gsm_ss_lcsClientExternalID, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSClientExternalID },
  { &hf_gsm_ss_lcsClientName, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSClientName },
  { &hf_gsm_ss_lcsRequestorID, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSRequestorID },
  { &hf_gsm_ss_lcsCodeword  , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSCodeword },
  { &hf_gsm_ss_lcsServiceTypeID, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSServiceTypeID },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_LocationNotificationArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_LocationNotificationArg_sequence, hf_index, ett_gsm_ss_LocationNotificationArg);

  return offset;
}


static const value_string gsm_ss_VerificationResponse_vals[] = {
  {   0, "permissionDenied" },
  {   1, "permissionGranted" },
  { 0, NULL }
};


static int
dissect_gsm_ss_VerificationResponse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


static const ber_sequence_t gsm_ss_LocationNotificationRes_sequence[] = {
  { &hf_gsm_ss_verificationResponse, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_VerificationResponse },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_LocationNotificationRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_LocationNotificationRes_sequence, hf_index, ett_gsm_ss_LocationNotificationRes);

  return offset;
}


static const value_string gsm_ss_MOLR_Type_vals[] = {
  {   0, "locationEstimate" },
  {   1, "assistanceData" },
  {   2, "deCipheringKeys" },
  {   3, "deferredMo-lrTTTPInitiation" },
  {   4, "deferredMo-lrSelfLocationInitiation" },
  {   5, "deferredMt-lrOrmo-lrTTTPLocationEstimate" },
  {   6, "deferredMt-lrOrmo-lrCancellation" },
  { 0, NULL }
};


static int
dissect_gsm_ss_MOLR_Type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}


const value_string gsm_ss_LocationMethod_vals[] = {
  {   0, "msBasedEOTD" },
  {   1, "msAssistedEOTD" },
  {   2, "assistedGPS" },
  {   3, "msBasedOTDOA" },
  {   4, "assistedGANSS" },
  {   5, "assistedGPSandGANSS" },
  { 0, NULL }
};


int
dissect_gsm_ss_LocationMethod(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}



static int
dissect_gsm_ss_GPSAssistanceData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const value_string gsm_ss_TerminationCause_vals[] = {
  {   0, "subscriberTermination" },
  {   1, "uETermination" },
  { 0, NULL }
};


static int
dissect_gsm_ss_TerminationCause(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
                                  NULL);

  return offset;
}



static int
dissect_gsm_ss_GANSSAssistanceData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}



static int
dissect_gsm_ss_PositioningProtocolPDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_ss_MultiplePositioningProtocolPDUs_sequence_of[1] = {
  { &hf_gsm_ss_MultiplePositioningProtocolPDUs_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_ss_PositioningProtocolPDU },
};

static int
dissect_gsm_ss_MultiplePositioningProtocolPDUs(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
                                      gsm_ss_MultiplePositioningProtocolPDUs_sequence_of, hf_index, ett_gsm_ss_MultiplePositioningProtocolPDUs);

  return offset;
}


static const ber_sequence_t gsm_ss_LCS_MOLRArg_sequence[] = {
  { &hf_gsm_ss_molr_Type    , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_ss_MOLR_Type },
  { &hf_gsm_ss_locationMethod, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_LocationMethod },
  { &hf_gsm_ss_lcs_QoS      , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_QoS },
  { &hf_gsm_ss_lcsClientExternalID, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSClientExternalID },
  { &hf_gsm_ss_mlc_Number   , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
  { &hf_gsm_ss_gpsAssistanceData, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_GPSAssistanceData },
  { &hf_gsm_ss_supportedGADShapes, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_SupportedGADShapes },
  { &hf_gsm_ss_lcsServiceTypeID, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSServiceTypeID },
  { &hf_gsm_ss_ageOfLocationInfo, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AgeOfLocationInformation },
  { &hf_gsm_ss_locationType , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LocationType },
  { &hf_gsm_ss_pseudonymIndicator, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL },
  { &hf_gsm_ss_h_gmlc_address, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_ss_locationEstimate, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Ext_GeographicalInformation },
  { &hf_gsm_ss_velocityEstimate, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_VelocityEstimate },
  { &hf_gsm_ss_referenceNumber, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber },
  { &hf_gsm_ss_periodicLDRInfo, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PeriodicLDRInfo },
  { &hf_gsm_ss_locationUpdateRequest, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL },
  { &hf_gsm_ss_sequenceNumber, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_SequenceNumber },
  { &hf_gsm_ss_terminationCause, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_TerminationCause },
  { &hf_gsm_ss_mo_lrShortCircuit, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL },
  { &hf_gsm_ss_ganssAssistanceData, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_GANSSAssistanceData },
  { &hf_gsm_ss_multiplePositioningProtocolPDUs, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_MultiplePositioningProtocolPDUs },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_LCS_MOLRArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_LCS_MOLRArg_sequence, hf_index, ett_gsm_ss_LCS_MOLRArg);

  return offset;
}



static int
dissect_gsm_ss_DecipheringKeys(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
                                       NULL);

  return offset;
}


static const ber_sequence_t gsm_ss_LCS_MOLRRes_sequence[] = {
  { &hf_gsm_ss_locationEstimate, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Ext_GeographicalInformation },
  { &hf_gsm_ss_decipheringKeys, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_DecipheringKeys },
  { &hf_gsm_ss_add_LocationEstimate, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Add_GeographicalInformation },
  { &hf_gsm_ss_velocityEstimate, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_VelocityEstimate },
  { &hf_gsm_ss_referenceNumber, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber },
  { &hf_gsm_ss_h_gmlc_address, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_ss_mo_lrShortCircuit, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL },
  { &hf_gsm_ss_reportingPLMNList, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_ReportingPLMNList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_LCS_MOLRRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_LCS_MOLRRes_sequence, hf_index, ett_gsm_ss_LCS_MOLRRes);

  return offset;
}


static const ber_sequence_t gsm_ss_LCS_AreaEventRequestArg_sequence[] = {
  { &hf_gsm_ss_referenceNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber },
  { &hf_gsm_ss_h_gmlc_address, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_ss_deferredLocationEventType, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_DeferredLocationEventType },
  { &hf_gsm_ss_areaEventInfo, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_AreaEventInfo },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_LCS_AreaEventRequestArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_LCS_AreaEventRequestArg_sequence, hf_index, ett_gsm_ss_LCS_AreaEventRequestArg);

  return offset;
}


static const ber_sequence_t gsm_ss_LCS_AreaEventReportArg_sequence[] = {
  { &hf_gsm_ss_referenceNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber },
  { &hf_gsm_ss_h_gmlc_address, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_LCS_AreaEventReportArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_LCS_AreaEventReportArg_sequence, hf_index, ett_gsm_ss_LCS_AreaEventReportArg);

  return offset;
}


static const ber_sequence_t gsm_ss_LCS_AreaEventCancellationArg_sequence[] = {
  { &hf_gsm_ss_referenceNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber },
  { &hf_gsm_ss_h_gmlc_address, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_LCS_AreaEventCancellationArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_LCS_AreaEventCancellationArg_sequence, hf_index, ett_gsm_ss_LCS_AreaEventCancellationArg);

  return offset;
}


static const ber_sequence_t gsm_ss_LCS_PeriodicLocationRequestArg_sequence[] = {
  { &hf_gsm_ss_referenceNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber },
  { &hf_gsm_ss_periodicLDRInfo, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_PeriodicLDRInfo },
  { &hf_gsm_ss_lcsClientExternalID, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSClientExternalID },
  { &hf_gsm_ss_qoS          , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_QoS },
  { &hf_gsm_ss_h_gmlc_address, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { &hf_gsm_ss_mo_lrShortCircuit, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL },
  { &hf_gsm_ss_reportingPLMNList, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_ReportingPLMNList },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_LCS_PeriodicLocationRequestArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_LCS_PeriodicLocationRequestArg_sequence, hf_index, ett_gsm_ss_LCS_PeriodicLocationRequestArg);

  return offset;
}


static const ber_sequence_t gsm_ss_LCS_PeriodicLocationRequestRes_sequence[] = {
  { &hf_gsm_ss_mo_lrShortCircuit, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_NULL },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_LCS_PeriodicLocationRequestRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_LCS_PeriodicLocationRequestRes_sequence, hf_index, ett_gsm_ss_LCS_PeriodicLocationRequestRes);

  return offset;
}


static const ber_sequence_t gsm_ss_LCS_LocationUpdateArg_sequence[] = {
  { &hf_gsm_ss_referenceNumber, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber },
  { &hf_gsm_ss_add_LocationEstimate, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Add_GeographicalInformation },
  { &hf_gsm_ss_velocityEstimate, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_VelocityEstimate },
  { &hf_gsm_ss_sequenceNumber, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_SequenceNumber },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_LCS_LocationUpdateArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_LCS_LocationUpdateArg_sequence, hf_index, ett_gsm_ss_LCS_LocationUpdateArg);

  return offset;
}


static const ber_sequence_t gsm_ss_LCS_LocationUpdateRes_sequence[] = {
  { &hf_gsm_ss_terminationCause, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_ss_TerminationCause },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_LCS_LocationUpdateRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_LCS_LocationUpdateRes_sequence, hf_index, ett_gsm_ss_LCS_LocationUpdateRes);

  return offset;
}


static const ber_sequence_t gsm_ss_LCS_PeriodicLocationCancellationArg_sequence[] = {
  { &hf_gsm_ss_referenceNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_ReferenceNumber },
  { &hf_gsm_ss_h_gmlc_address, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_GSN_Address },
  { NULL, 0, 0, 0, NULL }
};

static int
dissect_gsm_ss_LCS_PeriodicLocationCancellationArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
                                   gsm_ss_LCS_PeriodicLocationCancellationArg_sequence, hf_index, ett_gsm_ss_LCS_PeriodicLocationCancellationArg);

  return offset;
}


/* --- Module SS-Operations --- --- ---                                       */


/*--- End of included file: packet-gsm_map-fn.c ---*/
#line 761 "../../asn1/gsm_map/packet-gsm_map-template.c"

/* Specific translation for MAP V3 */
const value_string gsm_map_V1V2_opr_code_strings[] = {
  {  44, "forwardSM" },
  {  45, "sendRoutingInfoForSM" },
  {  46, "forwardSM" },
  { 0, NULL }
};
/* Generic translation for MAP operation */
const value_string gsm_map_opr_code_strings[] = {

/*--- Included file: packet-gsm_map-table.c ---*/
#line 1 "../../asn1/gsm_map/packet-gsm_map-table.c"

/* --- Module Remote-Operations-Information-Objects --- --- ---               */

/* Unknown or empty loop list OPERATION */

/* --- Module MobileDomainDefinitions --- --- ---                             */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-ApplicationContexts --- --- ---                             */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-SS-Code --- --- ---                                         */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-BS-Code --- --- ---                                         */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-TS-Code --- --- ---                                         */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-ExtensionDataTypes --- --- ---                              */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-CommonDataTypes --- --- ---                                 */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-SS-DataTypes --- --- ---                                    */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-ER-DataTypes --- --- ---                                    */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-SM-DataTypes --- --- ---                                    */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-OM-DataTypes --- --- ---                                    */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-MS-DataTypes --- --- ---                                    */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-CH-DataTypes --- --- ---                                    */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-LCS-DataTypes --- --- ---                                   */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-GR-DataTypes --- --- ---                                    */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-DialogueInformation --- --- ---                             */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-LocationServiceOperations --- --- ---                       */

	{ 85, "sendRoutingInfoForLCS" },
	{ 83, "provideSubscriberLocation" },
	{ 86, "subscriberLocationReport" },

/* --- Module MAP-Group-Call-Operations --- --- ---                           */

	{ 39, "prepareGroupCall" },
	{ 40, "sendGroupCallEndSignal" },
	{ 41, "processGroupCallSignalling" },
	{ 42, "forwardGroupCallSignalling" },
	{ 84, "sendGroupCallInfo" },

/* --- Module MAP-ShortMessageServiceOperations --- --- ---                   */

	{ 45, "sendRoutingInfoForSM" },
	{ 46, "mo_ForwardSM" },
	{ 44, "mt_ForwardSM" },
	{ 47, "reportSM_DeliveryStatus" },
	{ 64, "alertServiceCentre" },
	{ 63, "informServiceCentre" },
	{ 66, "readyForSM" },
	{ 21, "mt_ForwardSM_VGCS" },

/* --- Module MAP-SupplementaryServiceOperations --- --- ---                  */

	{ 10, "registerSS" },
	{ 11, "eraseSS" },
	{ 12, "activateSS" },
	{ 13, "deactivateSS" },
	{ 14, "interrogateSS" },
	{ 59, "processUnstructuredSS_Request" },
	{ 60, "unstructuredSS_Request" },
	{ 61, "unstructuredSS_Notify" },
	{ 17, "registerPassword" },
	{ 18, "getPassword" },
	{ 72, "ss_InvocationNotification" },
	{ 76, "registerCC_Entry" },
	{ 77, "eraseCC_Entry" },

/* --- Module MAP-CallHandlingOperations --- --- ---                          */

	{ 22, "sendRoutingInfo" },
	{ 4, "provideRoamingNumber" },
	{ 6, "resumeCallHandling" },
	{ 73, "setReportingState" },
	{ 74, "statusReport" },
	{ 75, "remoteUserFree" },
	{ 87, "ist_Alert" },
	{ 88, "ist_Command" },
	{ 20, "releaseResources" },

/* --- Module MAP-OperationAndMaintenanceOperations --- --- ---               */

	{ 50, "activateTraceMode" },
	{ 51, "deactivateTraceMode" },
	{ 58, "sendIMSI" },

/* --- Module MAP-MobileServiceOperations --- --- ---                         */

	{ 2, "updateLocation" },
	{ 3, "cancelLocation" },
	{ 67, "purgeMS" },
	{ 55, "sendIdentification" },
	{ 23, "updateGprsLocation" },
	{ 70, "provideSubscriberInfo" },
	{ 71, "anyTimeInterrogation" },
	{ 62, "anyTimeSubscriptionInterrogation" },
	{ 65, "anyTimeModification" },
	{ 5, "noteSubscriberDataModified" },
	{ 68, "prepareHandover" },
	{ 29, "sendEndSignal" },
	{ 33, "processAccessSignalling" },
	{ 34, "forwardAccessSignalling" },
	{ 69, "prepareSubsequentHandover" },
	{ 56, "sendAuthenticationInfo" },
	{ 15, "authenticationFailureReport" },
	{ 43, "checkIMEI" },
	{ 7, "insertSubscriberData" },
	{ 8, "deleteSubscriberData" },
	{ 37, "reset" },
	{ 38, "forwardCheckSS_Indication" },
	{ 57, "restoreData" },
	{ 24, "sendRoutingInfoForGprs" },
	{ 25, "failureReport" },
	{ 26, "noteMsPresentForGprs" },
	{ 89, "noteMM_Event" },

/* --- Module MAP-Errors --- --- ---                                          */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-Protocol --- --- ---                                        */

/* Unknown or empty loop list OPERATION */

/* --- Module DummyMAP --- --- ---                                            */

/* Unknown or empty loop list OPERATION */

/* --- Module SS-DataTypes --- --- ---                                        */

/* Unknown or empty loop list OPERATION */

/* --- Module SS-Operations --- --- ---                                       */

	{ 19, "processUnstructuredSS_Data" },
	{ 16, "notifySS" },
	{ 125, "forwardChargeAdvice" },
	{ 120, "forwardCUG_Info" },
	{ 124, "buildMPTY" },
	{ 123, "holdMPTY" },
	{ 122, "retrieveMPTY" },
	{ 121, "splitMPTY" },
	{ 126, "explicitCT" },
	{ 119, "accessRegisterCCEntry" },
	{ 117, "callDeflection" },
	{ 118, "userUserService" },
	{ 116, "lcs_LocationNotification" },
	{ 115, "lcs_MOLR" },
	{ 114, "lcs_AreaEventRequest" },
	{ 113, "lcs_AreaEventReport" },
	{ 112, "lcs_AreaEventCancellation" },
	{ 111, "lcs_PeriodicLocationRequest" },
	{ 110, "lcs_LocationUpdate" },
	{ 109, "lcs_PeriodicLocationCancellation" },

/*--- End of included file: packet-gsm_map-table.c ---*/
#line 772 "../../asn1/gsm_map/packet-gsm_map-template.c"
  { 0, NULL }
};
static const value_string gsm_map_err_code_string_vals[] = {

/*--- Included file: packet-gsm_map-table.c ---*/
#line 1 "../../asn1/gsm_map/packet-gsm_map-table.c"

/* --- Module Remote-Operations-Information-Objects --- --- ---               */

/* Unknown or empty loop list OPERATION */

/* --- Module MobileDomainDefinitions --- --- ---                             */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-ApplicationContexts --- --- ---                             */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-SS-Code --- --- ---                                         */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-BS-Code --- --- ---                                         */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-TS-Code --- --- ---                                         */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-ExtensionDataTypes --- --- ---                              */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-CommonDataTypes --- --- ---                                 */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-SS-DataTypes --- --- ---                                    */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-ER-DataTypes --- --- ---                                    */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-SM-DataTypes --- --- ---                                    */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-OM-DataTypes --- --- ---                                    */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-MS-DataTypes --- --- ---                                    */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-CH-DataTypes --- --- ---                                    */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-LCS-DataTypes --- --- ---                                   */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-GR-DataTypes --- --- ---                                    */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-DialogueInformation --- --- ---                             */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-LocationServiceOperations --- --- ---                       */

	{ 85, "sendRoutingInfoForLCS" },
	{ 83, "provideSubscriberLocation" },
	{ 86, "subscriberLocationReport" },

/* --- Module MAP-Group-Call-Operations --- --- ---                           */

	{ 39, "prepareGroupCall" },
	{ 40, "sendGroupCallEndSignal" },
	{ 41, "processGroupCallSignalling" },
	{ 42, "forwardGroupCallSignalling" },
	{ 84, "sendGroupCallInfo" },

/* --- Module MAP-ShortMessageServiceOperations --- --- ---                   */

	{ 45, "sendRoutingInfoForSM" },
	{ 46, "mo_ForwardSM" },
	{ 44, "mt_ForwardSM" },
	{ 47, "reportSM_DeliveryStatus" },
	{ 64, "alertServiceCentre" },
	{ 63, "informServiceCentre" },
	{ 66, "readyForSM" },
	{ 21, "mt_ForwardSM_VGCS" },

/* --- Module MAP-SupplementaryServiceOperations --- --- ---                  */

	{ 10, "registerSS" },
	{ 11, "eraseSS" },
	{ 12, "activateSS" },
	{ 13, "deactivateSS" },
	{ 14, "interrogateSS" },
	{ 59, "processUnstructuredSS_Request" },
	{ 60, "unstructuredSS_Request" },
	{ 61, "unstructuredSS_Notify" },
	{ 17, "registerPassword" },
	{ 18, "getPassword" },
	{ 72, "ss_InvocationNotification" },
	{ 76, "registerCC_Entry" },
	{ 77, "eraseCC_Entry" },

/* --- Module MAP-CallHandlingOperations --- --- ---                          */

	{ 22, "sendRoutingInfo" },
	{ 4, "provideRoamingNumber" },
	{ 6, "resumeCallHandling" },
	{ 73, "setReportingState" },
	{ 74, "statusReport" },
	{ 75, "remoteUserFree" },
	{ 87, "ist_Alert" },
	{ 88, "ist_Command" },
	{ 20, "releaseResources" },

/* --- Module MAP-OperationAndMaintenanceOperations --- --- ---               */

	{ 50, "activateTraceMode" },
	{ 51, "deactivateTraceMode" },
	{ 58, "sendIMSI" },

/* --- Module MAP-MobileServiceOperations --- --- ---                         */

	{ 2, "updateLocation" },
	{ 3, "cancelLocation" },
	{ 67, "purgeMS" },
	{ 55, "sendIdentification" },
	{ 23, "updateGprsLocation" },
	{ 70, "provideSubscriberInfo" },
	{ 71, "anyTimeInterrogation" },
	{ 62, "anyTimeSubscriptionInterrogation" },
	{ 65, "anyTimeModification" },
	{ 5, "noteSubscriberDataModified" },
	{ 68, "prepareHandover" },
	{ 29, "sendEndSignal" },
	{ 33, "processAccessSignalling" },
	{ 34, "forwardAccessSignalling" },
	{ 69, "prepareSubsequentHandover" },
	{ 56, "sendAuthenticationInfo" },
	{ 15, "authenticationFailureReport" },
	{ 43, "checkIMEI" },
	{ 7, "insertSubscriberData" },
	{ 8, "deleteSubscriberData" },
	{ 37, "reset" },
	{ 38, "forwardCheckSS_Indication" },
	{ 57, "restoreData" },
	{ 24, "sendRoutingInfoForGprs" },
	{ 25, "failureReport" },
	{ 26, "noteMsPresentForGprs" },
	{ 89, "noteMM_Event" },

/* --- Module MAP-Errors --- --- ---                                          */

/* Unknown or empty loop list OPERATION */

/* --- Module MAP-Protocol --- --- ---                                        */

/* Unknown or empty loop list OPERATION */

/* --- Module DummyMAP --- --- ---                                            */

/* Unknown or empty loop list OPERATION */

/* --- Module SS-DataTypes --- --- ---                                        */

/* Unknown or empty loop list OPERATION */

/* --- Module SS-Operations --- --- ---                                       */

	{ 19, "processUnstructuredSS_Data" },
	{ 16, "notifySS" },
	{ 125, "forwardChargeAdvice" },
	{ 120, "forwardCUG_Info" },
	{ 124, "buildMPTY" },
	{ 123, "holdMPTY" },
	{ 122, "retrieveMPTY" },
	{ 121, "splitMPTY" },
	{ 126, "explicitCT" },
	{ 119, "accessRegisterCCEntry" },
	{ 117, "callDeflection" },
	{ 118, "userUserService" },
	{ 116, "lcs_LocationNotification" },
	{ 115, "lcs_MOLR" },
	{ 114, "lcs_AreaEventRequest" },
	{ 113, "lcs_AreaEventReport" },
	{ 112, "lcs_AreaEventCancellation" },
	{ 111, "lcs_PeriodicLocationRequest" },
	{ 110, "lcs_LocationUpdate" },
	{ 109, "lcs_PeriodicLocationCancellation" },

/*--- End of included file: packet-gsm_map-table.c ---*/
#line 776 "../../asn1/gsm_map/packet-gsm_map-template.c"
    { 0, NULL }
};
static const true_false_string gsm_map_extension_value = {
  "No Extension",
  "Extension"
};
static const value_string gsm_map_nature_of_number_values[] = {
	{   0x00,	"unknown" },
	{   0x01,	"International Number" },
	{   0x02,	"National Significant Number" },
	{   0x03,	"Network Specific Number" },
	{   0x04,	"Subscriber Number" },
	{   0x05,	"Reserved" },
	{   0x06,	"Abbreviated Number" },
	{   0x07,	"Reserved for extension" },
	{ 0, NULL }
};
static value_string_ext gsm_map_nature_of_number_values_ext = VALUE_STRING_EXT_INIT(gsm_map_nature_of_number_values);

static const value_string gsm_map_number_plan_values[] = {
	{   0x00,	"unknown" },
	{   0x01,	"ISDN/Telephony Numbering (Rec ITU-T E.164)" },
	{   0x02,	"spare" },
	{   0x03,	"Data Numbering (ITU-T Rec. X.121)" },
	{   0x04,	"Telex Numbering (ITU-T Rec. F.69)" },
	{   0x05,	"spare" },
	{   0x06,	"Land Mobile Numbering (ITU-T Rec. E.212)" },
	{   0x07,	"spare" },
	{   0x08,	"National Numbering" },
	{   0x09,	"Private Numbering" },
	{   0x0f,	"Reserved for extension" },
	{ 0, NULL }
};
static value_string_ext gsm_map_number_plan_values_ext = VALUE_STRING_EXT_INIT(gsm_map_number_plan_values);

static const true_false_string gsm_map_Ss_Status_q_bit_values = {
  "Quiescent",
  "Operative"
};
static const true_false_string gsm_map_Ss_Status_p_values = {
  "Provisioned",
  "Not Provisioned"
};
static const true_false_string gsm_map_Ss_Status_r_values = {
  "Registered",
  "Not Registered"
};
static const true_false_string gsm_map_Ss_Status_a_values = {
  "Active",
  "not Active"
};

/*
 * Translate the MAP operation code value to a text string
 * Take into account the MAP version for ForwardSM
 */
const gchar* gsm_map_opr_code(guint32 val) {
  switch (val) {
  case 44: /*mt-forwardSM*/
	  /* FALLTHRU */
  case 46: /*mo-forwardSM*/
	  /* FALLTHRU */
    if (application_context_version < 3) {
      return val_to_str(val, gsm_map_V1V2_opr_code_strings, "Unknown GSM-MAP (%u)");
    }
    /* Else use the default map operation translation */
  default:
    return val_to_str(val, gsm_old_GSMMAPOperationLocalvalue_vals, "Unknown GSM-MAP opcode (%u)");
    break;
  }
}

/* Prototype for a decoding function */
typedef int (* dissect_function_t)( gboolean,
				    tvbuff_t *,
				    int ,
					asn1_ctx_t *,
				    proto_tree *,
				    int);

/*
 * Dissect Multiple Choice Message
 * This function is used to decode a message, when several encoding may be used.
 * For exemple, in the last MAP version, the Cancel Location is defined like this:
 * CancelLocationArg ::= [3] IMPLICIT SEQUENCE
 * But in the previous MAP version, it was a CHOICE between a SEQUENCE and an IMSI
 * As ASN1 encoders (or software) still uses the old encoding, this function allows
 * the decoding of both versions.
 * Moreover, some optimizations (or bad practice ?) in ASN1 encoder, removes the
 * SEQUENCE tag, when only one parameter is present in the SEQUENCE.
 * This explain why the function expects 3 parameters:
 * - a [3] SEQUENCE corresponding the recent ASN1 MAP encoding
 * - a SEQUENCE for old style
 * - and a single parameter, for old version or optimizations
 *
 * The analyze of the first ASN1 tag, indicate what kind of decoding should be used,
 * if the decoding function is provided (so not a NULL function)
 */
static int dissect_mc_message(tvbuff_t *tvb,
			      int offset,
				  asn1_ctx_t *actx,
			      proto_tree *tree,
			      gboolean implicit_param _U_, dissect_function_t parameter, int hf_index_param _U_,
			      gboolean implicit_seq   _U_, dissect_function_t sequence,  int hf_index_seq   _U_,
			      gboolean implicit_seq3 _U_, dissect_function_t sequence3, int hf_index_seq3 _U_ )
{
  guint8 octet;
  gint8 bug_class;
  gboolean bug_pc, bug_ind_field;
  gint32 bug_tag;
  guint32 bug_len;
  proto_item *cause;

  octet = tvb_get_guint8(tvb,0);
  if ( (octet & 0xf) == 3) {
    /* XXX  asn2wrs can not yet handle tagged assignment yes so this
     * XXX is some conformance file magic to work around that bug
     */
    offset = get_ber_identifier(tvb, offset, &bug_class, &bug_pc, &bug_tag);
    offset = get_ber_length(tvb, offset, &bug_len, &bug_ind_field);
    if (sequence3 != NULL) {
      offset= (sequence3) (implicit_seq3, tvb, offset, actx, tree, hf_index_seq3);
    } else {
      cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown or not implemented [3] sequence, cannot decode");
      proto_item_set_expert_flags(cause, PI_UNDECODED, PI_ERROR);
      expert_add_info_format(actx->pinfo, cause, PI_UNDECODED, PI_ERROR, "Unknown or not implemented [3] sequence");
    }
  } else if (octet == 0x30) {
    if (sequence != NULL) {
      offset= (sequence) (implicit_seq, tvb, 0, actx, tree, hf_index_seq);
    } else {
      cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown or not implemented sequence");
      proto_item_set_expert_flags(cause, PI_UNDECODED, PI_ERROR);
      expert_add_info_format(actx->pinfo, cause, PI_UNDECODED, PI_ERROR, "Unknown or not implemented sequence");
    }
  } else {
    if (parameter != NULL) {
      offset= (parameter) (implicit_param, tvb, offset, actx, tree, hf_index_param);
    } else {
      cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown or not implemented parameter");
      proto_item_set_expert_flags(cause, PI_UNDECODED, PI_ERROR);
      expert_add_info_format(actx->pinfo, cause, PI_UNDECODED, PI_ERROR, "Unknown or not implemented parameter");
    }
  }
  return offset;
}

static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx) {

  proto_item *cause;

  switch(opcode){
  case  2: /*updateLocation*/
    offset=dissect_gsm_map_ms_UpdateLocationArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case  3: /*cancelLocation*/
    offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, dissect_gsm_map_Identity, hf_gsm_map_ms_identity,
			      FALSE, dissect_gsm_map_Identity, hf_gsm_map_ms_identity,
			      TRUE , dissect_gsm_map_ms_CancelLocationArg, -1);/*undefined*/
    break;
  case  4: /*provideRoamingNumber*/
    offset=dissect_gsm_map_ch_ProvideRoamingNumberArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case  5: /*noteSubscriberDataModified*/
    offset=dissect_gsm_map_ms_NoteSubscriberDataModifiedArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case  6: /*resumeCallHandling*/
    offset=dissect_gsm_map_ch_ResumeCallHandlingArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case  7: /*insertSubscriberData*/
    offset=dissect_gsm_map_ms_InsertSubscriberDataArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case  8: /*deleteSubscriberData*/
    offset=dissect_gsm_map_ms_DeleteSubscriberDataArg(FALSE, tvb, offset, actx, tree, -1);
    break;
    /* TODO find out why this isn't in the ASN1 file */
    /* reserved sendParameters (9) */
  case  10: /*registerSS*/
    offset=dissect_gsm_map_ss_RegisterSS_Arg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case  11: /*eraseSS*/
    offset=dissect_gsm_map_ss_SS_ForBS_Code(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 12: /*activateSS*/
    offset=dissect_gsm_map_ss_SS_ForBS_Code(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 13: /*deactivateSS*/
    offset=dissect_gsm_map_ss_SS_ForBS_Code(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 14: /*interrogateSS*/
    offset=dissect_gsm_map_ss_SS_ForBS_Code(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 15: /*authenticationFailureReport*/
    offset=dissect_gsm_map_ms_AuthenticationFailureReportArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 16: /*SS-protocol notifySS*/
    offset=dissect_gsm_ss_NotifySS_Arg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 17: /*registerPassword*/
    offset=dissect_gsm_map_SS_Code(FALSE, tvb, offset, actx, tree, hf_gsm_map_ss_Code);
    break;
  case 18: /*getPassword*/
    offset=dissect_gsm_old_GetPasswordArg(FALSE, tvb, offset, actx, tree, hf_gsm_map_getPassword);
    break;
  case 19: /* SS-Protocol processUnstructuredSS-Data (19) */
    offset=dissect_gsm_ss_SS_UserData(FALSE, tvb, offset, actx, tree, hf_gsm_map_ss_SS_UserData);
    break;
  case 20: /*releaseResources*/
    offset=dissect_gsm_map_ch_ReleaseResourcesArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 21: /*mt-ForwardSM-VGCS*/
    offset=dissect_gsm_map_sm_MT_ForwardSM_VGCS_Arg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 22: /*sendRoutingInfo*/
	  if (application_context_version == 3){
		  offset=dissect_gsm_map_ch_SendRoutingInfoArg(FALSE, tvb, offset, actx, tree, -1);
	  }else{
		  offset=dissect_gsm_old_SendRoutingInfoArgV2(FALSE, tvb, offset, actx, tree, -1);
	  }
    break;
  case 23: /*updateGprsLocation*/
    offset=dissect_gsm_map_ms_UpdateGprsLocationArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 24: /*sendRoutingInfoForGprs*/
    offset=dissect_gsm_map_ms_SendRoutingInfoForGprsArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 25: /*failureReport*/
    offset=dissect_gsm_map_ms_FailureReportArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 26: /*noteMsPresentForGprs*/
    offset=dissect_gsm_map_ms_NoteMsPresentForGprsArg(FALSE, tvb, offset, actx, tree, -1);
    break;
    /* undefined 27 */
    /* reserved performHandover (28) */
  case 29: /*sendEndSignal*/
    offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, NULL, -1,
			      FALSE, dissect_gsm_old_Bss_APDU, -1,
			      TRUE , dissect_gsm_map_ms_SendEndSignal_Arg, -1);
    break;
    /* reserved performSubsequentHandover (30) */
  case 31: /*provideSIWFSNumber*/
    offset=dissect_gsm_old_ProvideSIWFSNumberArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 32: /*sIWFSSignallingModify*/
    offset=dissect_gsm_old_SIWFSSignallingModifyArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 33: /*processAccessSignalling*/
    offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, NULL, -1,
			      FALSE, dissect_gsm_old_Bss_APDU, -1,
			      TRUE , dissect_gsm_map_ms_ProcessAccessSignalling_Arg, -1);
    break;
  case 34: /*forwardAccessSignalling*/
    offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, NULL, -1,
			      FALSE, dissect_gsm_old_Bss_APDU, -1,
			      TRUE , dissect_gsm_map_ms_ForwardAccessSignalling_Arg, -1);
    break;
    /* reserved noteInternalHandover (35) */
    /* undefined 36 */
  case 37: /*reset*/
    offset=dissect_gsm_map_ms_ResetArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 38: /*forwardCheckSS-Indication*/
    return offset;
    break;
  case 39: /*prepareGroupCall*/
    offset=dissect_gsm_map_gr_PrepareGroupCallArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 40: /*sendGroupCallEndSignal*/
    offset = dissect_gsm_map_gr_SendGroupCallEndSignalArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 41: /*processGroupCallSignalling*/
    offset = dissect_gsm_map_gr_ProcessGroupCallSignallingArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 42: /*forwardGroupCallSignalling*/
    offset=dissect_gsm_map_gr_ForwardGroupCallSignallingArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 43: /*checkIMEI*/
    offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, dissect_gsm_map_IMEI, hf_gsm_map_ms_imei,
			      FALSE, dissect_gsm_map_ms_CheckIMEI_Arg, -1,
			      TRUE , NULL, -1); /* no [3] SEQUENCE */
    break;
  case 44: /*mt-forwardSM(v3) or ForwardSM(v1/v2)*/
    if (application_context_version == 3)
      offset=dissect_gsm_map_sm_MT_ForwardSM_Arg(FALSE, tvb, offset, actx, tree, -1);
    else {
      offset=dissect_gsm_old_ForwardSM_Arg(FALSE, tvb, offset, actx, tree, -1);
    }
    break;
  case 45: /*sendRoutingInfoForSM*/
    offset=dissect_gsm_map_sm_RoutingInfoForSM_Arg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 46: /*mo-forwardSM(v3) or ForwardSM(v1/v2)*/
    if (application_context_version == 3)
      offset=dissect_gsm_map_sm_MO_ForwardSM_Arg(FALSE, tvb, offset, actx, tree, -1);
    else {
      offset=dissect_gsm_old_ForwardSM_Arg(FALSE, tvb, offset, actx, tree, -1);
    }
    break;
  case 47: /*reportSM-DeliveryStatus*/
    offset=dissect_gsm_map_sm_ReportSM_DeliveryStatusArg(FALSE, tvb, offset, actx, tree, -1);
    break;
    /* reserved noteSubscriberPresent (48) */
    /* reserved alertServiceCentreWithoutResult (49)
	 * ETS 300 599: December 2000 (GSM 09.02 version 4.19.1)
	 * -- alertServiceCentreWithoutResult must not be used in
	 * -- version greater 1
	 */
  case 49:
	offset = dissect_gsm_map_sm_AlertServiceCentreArg(FALSE, tvb, offset, actx, tree, -1);
	break;
  case 50: /*activateTraceMode*/
    offset=dissect_gsm_map_om_ActivateTraceModeArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 51: /*deactivateTraceMode*/
    offset=dissect_gsm_map_om_DeactivateTraceModeArg(FALSE, tvb, offset, actx, tree, -1);
    break;
    /* reserved traceSubscriberActivity (52) */
    /* undefined 53 */
  case 54: /*beginSubscriberActivity*/
    offset=dissect_gsm_old_BeginSubscriberActivityArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 55: /*sendIdentification*/
    offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, dissect_gsm_map_TMSI, hf_gsm_map_tmsi,
			      FALSE, dissect_gsm_map_ms_SendIdentificationArg, -1,
			      TRUE,  NULL, -1);
    break;
  case 56: /*sendAuthenticationInfo*/
    offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, dissect_gsm_map_IMSI, hf_gsm_map_imsi,
			      FALSE, dissect_gsm_map_ms_SendAuthenticationInfoArg, -1,
			      TRUE,  NULL, -1);
    break;
  case 57: /*restoreData*/
    offset=dissect_gsm_map_ms_RestoreDataArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 58: /*sendIMSI*/
    offset = dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, actx, tree, hf_gsm_map_msisdn);
    break;
  case 59: /*processUnstructuredSS-Request*/
    offset=dissect_gsm_map_ss_USSD_Arg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 60: /*unstructuredSS-Request*/
    offset=dissect_gsm_map_ss_USSD_Arg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 61: /*unstructuredSS-Notify*/
    offset=dissect_gsm_map_ss_USSD_Arg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 62: /*AnyTimeSubscriptionInterrogation*/
    offset=dissect_gsm_map_ms_AnyTimeSubscriptionInterrogationArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 63: /*informServiceCentre*/
    offset=dissect_gsm_map_sm_InformServiceCentreArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 64: /*alertServiceCentre*/
    offset=dissect_gsm_map_sm_AlertServiceCentreArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 65: /*AnyTimeModification*/
    offset=dissect_gsm_map_ms_AnyTimeModificationArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 66: /*readyForSM*/
    offset=dissect_gsm_map_sm_ReadyForSM_Arg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 67: /*purgeMS*/
    offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, dissect_gsm_map_IMSI, hf_gsm_map_imsi,
			      FALSE, dissect_gsm_old_PurgeMSArgV2, -1, /*undefined*/
			      TRUE , dissect_gsm_map_ms_PurgeMS_Arg, -1);
    break;
  case 68: /*prepareHandover*/
    offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, NULL, -1,
			      FALSE, dissect_gsm_old_PrepareHO_ArgOld, -1,
			      TRUE, dissect_gsm_map_ms_PrepareHO_Arg, -1);
    break;
  case 69: /*prepareSubsequentHandover*/
    offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, NULL, -1,
			      FALSE, NULL, -1,
			      TRUE, dissect_gsm_map_ms_PrepareSubsequentHO_Arg, -1);
    break;
  case 70: /*provideSubscriberInfo*/
    offset=dissect_gsm_map_ms_ProvideSubscriberInfoArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 71: /*anyTimeInterrogation*/
    offset=dissect_gsm_map_ms_AnyTimeInterrogationArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 72: /*ss-InvocationNotificatio*/
    offset=dissect_gsm_map_ss_SS_InvocationNotificationArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 73: /*setReportingState*/
    offset=dissect_gsm_map_ch_SetReportingStateArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 74: /*statusReport*/
    offset=dissect_gsm_map_ch_StatusReportArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 75: /*remoteUserFree*/
    offset=dissect_gsm_map_ch_RemoteUserFreeArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 76: /*registerCC-Entry*/
    offset=dissect_gsm_map_ss_RegisterCC_EntryArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 77: /*eraseCC-Entry*/
    offset=dissect_gsm_map_ss_EraseCC_EntryArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 78: /*secureTransportClass1*/
  case 79: /*secureTransportClass1*/
  case 80: /*secureTransportClass1*/
  case 81: /*secureTransportClass1*/
    offset=dissect_gsm_old_SecureTransportArg(FALSE, tvb, offset, actx, tree, -1);
    break;
    /* undefined 82 */
  case 83: /*provideSubscriberLocation*/
    offset=dissect_gsm_map_lcs_ProvideSubscriberLocation_Arg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 84: /*sendGroupCallInfo*/
    offset=dissect_gsm_map_gr_SendGroupCallInfoArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 85: /*sendRoutingInfoForLCS*/
    offset=dissect_gsm_map_lcs_RoutingInfoForLCS_Arg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 86: /*subscriberLocationReport*/
    offset=dissect_gsm_map_lcs_SubscriberLocationReport_Arg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 87: /*ist-Alert*/
    offset=dissect_gsm_map_ch_IST_AlertArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 88: /*ist-Command*/
    offset=dissect_gsm_map_ch_IST_CommandArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 89: /*noteMM-Event*/
    offset=dissect_gsm_map_ms_NoteMM_EventArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 109: /*SS-protocol lcs-PeriodicLocationCancellation*/
    offset=dissect_gsm_ss_LCS_PeriodicLocationCancellationArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 110: /*SS-protocol lcs-LocationUpdate*/
    offset=dissect_gsm_ss_LCS_LocationUpdateArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 111: /*SS-protocol lcs-PeriodicLocationRequest*/
    offset=dissect_gsm_ss_LCS_PeriodicLocationRequestArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 112: /*SS-protocol lcs-AreaEventCancellation*/
    offset=dissect_gsm_ss_LCS_AreaEventCancellationArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 113: /*SS-protocol lcs-AreaEventReport*/
    offset=dissect_gsm_ss_LCS_AreaEventReportArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 114: /*SS-protocol lcs-AreaEventRequest*/
    offset=dissect_gsm_ss_LCS_AreaEventRequestArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 115: /*SS-protocol lcs-MOLR*/
    offset=dissect_gsm_ss_LCS_MOLRArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 116: /*SS-protocol lcs-LocationNotification*/
    offset=dissect_gsm_ss_LocationNotificationArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 117: /*SS-protocol callDeflection*/
    offset=dissect_gsm_ss_CallDeflectionArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 118: /*SS-protocol userUserService*/
    offset=dissect_gsm_ss_UserUserServiceArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 119: /*SS-protocol accessRegisterCCEntry*/
    offset=dissect_gsm_ss_AccessRegisterCCEntryArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 120: /*SS-protocol forwardCUG-Info*/
	application_context_version = 3;
    offset=dissect_gsm_ss_ForwardCUG_InfoArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 121: /*SS-protocol splitMPTY no Argument*/
    break;
  case 122: /*SS-protocol retrieveMPTY no Argument*/
    break;
  case 123: /*SS-protocol holdMPTY no Argument*/
    break;
  case 124: /*SS-protocol buildMPTY no Argument*/
    break;
  case 125: /*SS-protocol forwardChargeAdvice*/
    offset=dissect_gsm_ss_ForwardChargeAdviceArg(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 126: /*SS-protocol explicitCT no Argument*/
    break;
  default:
    cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob");
    proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN);
    expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",opcode);
  }
  return offset;
}


static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx) {

  proto_item *cause;

  switch(opcode){
  case  2: /*updateLocation*/
    offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, dissect_gsm_map_IMSI, hf_gsm_map_imsi,
			      FALSE, dissect_gsm_map_ms_UpdateLocationRes, -1,
			      TRUE , NULL, -1);
    break;
  case  3: /*cancelLocation*/
    offset=dissect_gsm_map_ms_CancelLocationRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case  4: /*provideRoamingNumber*/
    offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, dissect_gsm_map_ISDN_AddressString, hf_gsm_map_msisdn,
			      FALSE, dissect_gsm_map_ch_ProvideRoamingNumberRes, -1,
			      TRUE , NULL, -1);/*undefined*/
    break;
  case  5: /*noteSubscriberDataModified*/
    offset=dissect_gsm_map_ms_NoteSubscriberDataModifiedRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case  6: /*resumeCallHandling*/
    offset=dissect_gsm_map_ch_ResumeCallHandlingRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case  7: /*insertSubscriberData*/
    offset=dissect_gsm_map_ms_InsertSubscriberDataRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case  8: /*deleteSubscriberData*/
    offset=dissect_gsm_map_ms_DeleteSubscriberDataRes(FALSE, tvb, offset, actx, tree, -1);
    break;
	/* TODO find out why this isn't in the ASN1 file
  case  9: sendParameters
    offset=dissect_gsm_map_DeleteSubscriberDataArg(FALSE, tvb, offset, actx, tree, -1);
    break;
	*/
  case  10: /*registerSS*/
    offset=dissect_gsm_map_ss_SS_Info(FALSE, tvb, offset, actx, tree, -1);
    break;
  case  11: /*eraseSS*/
    offset=dissect_gsm_map_ss_SS_Info(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 12: /*activateSS*/
    offset=dissect_gsm_map_ss_SS_Info(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 13: /*deactivateSS*/
    offset=dissect_gsm_map_ss_SS_Info(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 14: /*interrogateSS*/
    offset=dissect_gsm_map_ss_InterrogateSS_Res(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 15: /*authenticationFailureReport*/
    offset=dissect_gsm_map_ms_AuthenticationFailureReportRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 17: /*registerPassword*/
    /* change hf_gsm_map_ss_Code to something with password */
    offset=dissect_gsm_old_NewPassword(FALSE, tvb, offset, actx, tree, hf_gsm_map_ss_Code);
    break;
  case 18: /*getPassword*/
    offset=dissect_gsm_old_CurrentPassword(FALSE, tvb, offset, actx, tree, hf_gsm_map_currentPassword);
    break;
  case 19: /* SS-Protocol processUnstructuredSS-Data (19) */
    offset=dissect_gsm_ss_SS_UserData(FALSE, tvb, offset, actx, tree, hf_gsm_map_ss_SS_UserData);
    break;
  case 20: /*releaseResources*/
    offset=dissect_gsm_map_ch_ReleaseResourcesRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 21: /*mt-ForwardSM-VGCS*/
    offset=dissect_gsm_map_sm_MT_ForwardSM_VGCS_Res(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 22: /*sendRoutingInfo*/
	  if (application_context_version == 3){
		  /* If the tag is missing use SendRoutingInfoRes_U */
		  offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, NULL, -1,
			      FALSE, dissect_gsm_map_ch_SendRoutingInfoRes_U, -1,
			      TRUE , dissect_gsm_map_ch_SendRoutingInfoRes, -1);
	  }else{
		  offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, dissect_gsm_map_IMSI, hf_gsm_map_imsi,
			      FALSE, dissect_gsm_old_SendRoutingInfoResV2, -1,
			      TRUE , dissect_gsm_map_ch_SendRoutingInfoRes, -1);
	  }
    break;
  case 23: /*updateGprsLocation*/
    offset=dissect_gsm_map_ms_UpdateGprsLocationRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 24: /*sendRoutingInfoForGprs*/
    offset=dissect_gsm_map_ms_SendRoutingInfoForGprsRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 25: /*failureReport*/
    offset=dissect_gsm_map_ms_FailureReportRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 26: /*noteMsPresentForGprs*/
    offset=dissect_gsm_map_ms_NoteMsPresentForGprsRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 29: /*sendEndSignal*/
	  /* Taken from MAP-MobileServiceOperations{ 0 identified-organization (4) etsi (0) mobileDomain
	   * (0) gsm-Network (1) modules (3) map-MobileServiceOperations (5) version9 (9) }
	   */
    offset=dissect_gsm_map_ms_SendEndSignal_Res(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 31: /*provideSIWFSNumber*/
    offset=dissect_gsm_old_ProvideSIWFSNumberRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 32: /*provideSIWFSSignallingModify*/
    offset=dissect_gsm_old_SIWFSSignallingModifyRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 39: /*prepareGroupCall*/
    offset=dissect_gsm_map_gr_PrepareGroupCallRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 40: /*sendGroupCallEndSignal*/
    offset=dissect_gsm_map_gr_SendGroupCallEndSignalRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 43: /*checkIMEI*/
    offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, dissect_gsm_map_ms_EquipmentStatus, hf_gsm_map_ms_equipmentStatus,
			      FALSE, dissect_gsm_map_ms_CheckIMEI_Res, -1,
			      TRUE,  NULL, -1);
    break;
  case 44: /*mt-forwardSM*/
    offset=dissect_gsm_map_sm_MT_ForwardSM_Res(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 45: /*sendRoutingInfoForSM*/
    offset=dissect_gsm_map_sm_RoutingInfoForSM_Res(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 46: /*mo-forwardSM*/
    offset=dissect_gsm_map_sm_MO_ForwardSM_Res(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 47: /*reportSM-DeliveryStatus*/
    offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, dissect_gsm_map_ISDN_AddressString, hf_gsm_map_sm_storedMSISDN,
			      FALSE, NULL, -1,
			      FALSE , dissect_gsm_map_sm_ReportSM_DeliveryStatusRes, -1);/*undefined*/

    break;
  case 48: /*noteSubscriberPresent*/
    break;
  case 50: /*activateTraceMode*/
    offset=dissect_gsm_map_om_ActivateTraceModeRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 51: /*deactivateTraceMode*/
    offset=dissect_gsm_map_om_DeactivateTraceModeRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 55: /*sendIdentification */
    offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, dissect_gsm_map_IMSI, hf_gsm_map_imsi,
			      FALSE, dissect_gsm_old_SendIdentificationResV2, -1,/*undefined*/
			      TRUE,  dissect_gsm_map_ms_SendIdentificationRes, -1);
    break;
  case 56: /*sendAuthenticationInfo*/
    offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, NULL, -1,
			      FALSE, dissect_gsm_old_SendAuthenticationInfoResOld, -1,
			      TRUE , dissect_gsm_map_ms_SendAuthenticationInfoRes, -1);
    break;
  case 57: /*restoreData*/
    offset=dissect_gsm_map_ms_RestoreDataRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 58: /*sendIMSI*/
    offset=dissect_gsm_map_IMSI(FALSE, tvb, offset, actx, tree, hf_gsm_map_ms_imsi);
    break;
  case 59: /*unstructuredSS-Request*/
    offset=dissect_gsm_map_ss_USSD_Res(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 60: /*unstructuredSS-Request*/
    offset=dissect_gsm_map_ss_USSD_Res(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 61: /*unstructuredSS-Notify*/
    /* TRUE ? */
    proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob");
    break;
  case 62: /*AnyTimeSubscriptionInterrogation*/
    offset=dissect_gsm_map_ms_AnyTimeSubscriptionInterrogationRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 64: /*alertServiceCentre*/
    /* TRUE */
    break;
  case 65: /*AnyTimeModification*/
    offset=dissect_gsm_map_ms_AnyTimeModificationRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 66: /*readyForSM*/
    offset=dissect_gsm_map_sm_ReadyForSM_Res(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 67: /*purgeMS*/
    offset=dissect_gsm_map_ms_PurgeMS_Res(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 68: /*prepareHandover*/
    offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, NULL, -1,
			      FALSE, dissect_gsm_old_PrepareHO_ResOld, -1,
			      TRUE , dissect_gsm_map_ms_PrepareHO_Res, -1);
    break;
  case 69: /*prepareSubsequentHandover*/
    offset=dissect_mc_message(tvb, offset, actx, tree,
			      FALSE, NULL, -1,
			      FALSE, NULL, -1,
			      TRUE , dissect_gsm_map_ms_PrepareSubsequentHO_Res, -1);
    break;
  case 70: /*provideSubscriberInfo*/
    offset=dissect_gsm_map_ms_ProvideSubscriberInfoRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 71: /*anyTimeInterrogation*/
    offset=dissect_gsm_map_ms_AnyTimeInterrogationRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 72: /*ss-InvocationNotificatio*/
    offset=dissect_gsm_map_ss_SS_InvocationNotificationRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 73: /*setReportingState*/
    offset=dissect_gsm_map_ch_SetReportingStateRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 74: /*statusReport*/
    offset=dissect_gsm_map_ch_StatusReportRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 75: /*remoteUserFree*/
    offset=dissect_gsm_map_ch_RemoteUserFreeRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 76: /*registerCC-Entry*/
    offset=dissect_gsm_map_ss_RegisterCC_EntryRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 77: /*eraseCC-Entry*/
    offset=dissect_gsm_map_ss_EraseCC_EntryRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 78: /*secureTransportClass1*/
  case 79: /*secureTransportClass2*/
  case 80: /*secureTransportClass3*/
  case 81: /*secureTransportClass4*/
    offset=dissect_gsm_old_SecureTransportRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 83: /*provideSubscriberLocation*/
    offset=dissect_gsm_map_lcs_ProvideSubscriberLocation_Res(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 84: /*sendGroupCallInfo*/
    offset=dissect_gsm_map_gr_SendGroupCallInfoRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 85: /*sendRoutingInfoForLCS*/
    offset=dissect_gsm_map_lcs_RoutingInfoForLCS_Res(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 86: /*subscriberLocationReport*/
    offset=dissect_gsm_map_lcs_SubscriberLocationReport_Res(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 87: /*ist-Alert*/
    offset=dissect_gsm_map_ch_IST_AlertRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 88: /*ist-Command*/
    offset=dissect_gsm_map_ch_IST_CommandRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 89: /*noteMM-Event*/
    offset=dissect_gsm_map_ms_NoteMM_EventRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 109: /*SS-protocol lcs-PeriodicLocationCancellation*/
	  /* No parameter */
    break;
  case 110: /*SS-protocol lcs-LocationUpdate*/
	  offset=dissect_gsm_ss_LCS_LocationUpdateRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 111: /*SS-protocol lcs-PeriodicLocationRequest*/
    offset=dissect_gsm_ss_LCS_PeriodicLocationRequestRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 112: /*SS-protocol lcs-AreaEventCancellation*/
    break;
  case 113: /*SS-protocol lcs-AreaEventReport*/
    break;
  case 114: /*SS-protocol lcs-AreaEventRequest No RESULT data*/
    break;
  case 115: /*SS-protocol lcs-MOLR*/
    offset=dissect_gsm_ss_LCS_MOLRRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 116: /*SS-protocol lcs-LocationNotification*/
    offset=dissect_gsm_ss_LocationNotificationRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 117: /*SS-protocol callDeflection no RESULT*/
    break;
  case 118: /*SS-protocol userUserService no RESULT*/
    break;
  case 119: /*SS-protocol accessRegisterCCEntry*/
    offset=dissect_gsm_map_ss_RegisterCC_EntryRes(FALSE, tvb, offset, actx, tree, -1);
    break;
  case 120: /*SS-protocol forwardCUG-Info*/
	  /* No RETURN RESULT*/
    break;
  case 121: /*SS-protocol splitMPTY no RESULT*/
    break;
  case 122: /*SS-protocol retrieveMPTY no RESULT*/
    break;
  case 123: /*SS-protocol holdMPTY no RESULT*/
    break;
  case 124: /*SS-protocol buildMPTY no RESULT*/
    break;
  case 125: /*SS-protocol forwardChargeAdvice no RESULT*/
    break;
  case 126: /*SS-protocol explicitCT no RESULT*/
    break;

 default:
   cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob");
   proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN);
   expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",opcode);
  }
  return offset;
}



static int dissect_returnErrorData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx) {
  proto_item *cause;

  switch(errorCode){
  case 1: /* UnknownSubscriberParam */
	  offset=dissect_gsm_map_er_UnknownSubscriberParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 4: /* SecureTransportErrorParam */
	  offset=dissect_gsm_old_SecureTransportErrorParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 5: /* UnidentifiedSubParam */
	  offset=dissect_gsm_map_er_UnidentifiedSubParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 6: /* AbsentSubscriberSM-Param */
	  offset=dissect_gsm_map_er_AbsentSubscriberSM_Param(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 8: /* RoamingNotAllowedParam */
	  offset=dissect_gsm_map_er_RoamingNotAllowedParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 9: /* IllegalSubscriberParam */
	  offset=dissect_gsm_map_er_IllegalSubscriberParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 10: /* BearerServNotProvParam */
	  offset=dissect_gsm_map_er_BearerServNotProvParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 11: /* TeleservNotProvParam */
	  offset=dissect_gsm_map_er_TeleservNotProvParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 12: /* IllegalEquipmentParam */
	  offset=dissect_gsm_map_er_IllegalEquipmentParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 13: /* CallBarredParam */
	  offset=dissect_gsm_map_er_CallBarredParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 14: /* ForwardingViolationParam */
	  offset=dissect_gsm_map_er_ForwardingViolationParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 15: /* CUG-RejectParam */
	  offset=dissect_gsm_map_er_CUG_RejectParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 16: /* IllegalSS-OperationParam */
	  offset=dissect_gsm_map_er_IllegalSS_OperationParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 17: /* SS-ErrorStatus */
	  offset=dissect_gsm_map_ss_SS_Status(FALSE, tvb, offset, actx, tree, hf_gsm_map_ss_ss_Status);
	  break;
  case 18: /* SS-NotAvailableParam */
	  offset=dissect_gsm_map_er_SS_NotAvailableParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 19: /* SS-SubscriptionViolationParam */
	  offset=dissect_gsm_map_er_SS_SubscriptionViolationParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 20: /* SS-IncompatibilityCause */
	  offset=dissect_gsm_map_er_SS_IncompatibilityCause(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 21: /* FacilityNotSupParam */
	  offset=dissect_gsm_map_er_FacilityNotSupParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 22: /* OngoingGroupCallParam */
      offset=dissect_gsm_map_er_OngoingGroupCallParam(FALSE, tvb, offset, actx, tree, -1);
      break;
  case 27: /* AbsentSubscriberParam */
	  offset=dissect_gsm_map_er_AbsentSubscriberParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 28: /* IncompatibleTerminalParam */
	  offset=dissect_gsm_map_er_IncompatibleTerminalParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 29: /* ShortTermDenialParam */
	  offset=dissect_gsm_map_er_ShortTermDenialParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 30: /* LongTermDenialParam */
	  offset=dissect_gsm_map_er_LongTermDenialParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 31: /* SubBusyForMT-SMS-Param */
	  offset=dissect_gsm_map_er_SubBusyForMT_SMS_Param(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 32: /* SM-DeliveryFailureCause */
	  offset=dissect_gsm_map_er_SM_DeliveryFailureCause(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 33: /* MessageWaitListFullParam */
	  offset=dissect_gsm_map_er_MessageWaitListFullParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 34: /* SystemFailureParam */
	  offset=dissect_gsm_map_er_SystemFailureParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 35: /* DataMissingParam */
	  offset=dissect_gsm_map_er_DataMissingParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 36: /* UnexpectedDataParam */
	  offset=dissect_gsm_map_er_UnexpectedDataParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 37: /* PW-RegistrationFailureCause */
	  offset=dissect_gsm_map_er_PW_RegistrationFailureCause(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 39: /* NoRoamingNbParam */
	  offset=dissect_gsm_map_er_NoRoamingNbParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 40: /* TracingBufferFullParam */
	  offset=dissect_gsm_map_er_TracingBufferFullParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 42: /* TargetCellOutsideGCA-Param */
	  offset=dissect_gsm_map_er_TargetCellOutsideGCA_Param(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 44: /* NumberChangedParam */
	  offset=dissect_gsm_map_er_NumberChangedParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 45: /* BusySubscriberParam */
	  offset=dissect_gsm_map_er_BusySubscriberParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 46: /* NoSubscriberReplyParam */
	  offset=dissect_gsm_map_er_NoSubscriberReplyParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 47: /* ForwardingFailedParam */
	  offset=dissect_gsm_map_er_ForwardingFailedParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 48: /* OR-NotAllowedParam */
	  offset=dissect_gsm_map_er_OR_NotAllowedParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 49: /* ATI-NotAllowedParam */
	  offset=dissect_gsm_map_er_ATI_NotAllowedParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 50: /* NoGroupCallNbParam */
	  offset=dissect_gsm_map_er_NoGroupCallNbParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 51: /* ResourceLimitationParam */
	  offset=dissect_gsm_map_er_ResourceLimitationParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 52: /* UnauthorizedRequestingNetwork-Param */
	  offset=dissect_gsm_map_er_UnauthorizedRequestingNetwork_Param(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 53: /* UnauthorizedLCSClient-Param */
	  offset=dissect_gsm_map_er_UnauthorizedLCSClient_Param(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 54: /* PositionMethodFailure-Param */
	  offset=dissect_gsm_map_er_PositionMethodFailure_Param(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 58: /* UnknownOrUnreachableLCSClient-Param */
	  offset=dissect_gsm_map_er_UnknownOrUnreachableLCSClient_Param(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 59: /* MM-EventNotSupported-Param */
	  offset=dissect_gsm_map_er_MM_EventNotSupported_Param(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 60: /* ATSI-NotAllowedParam */
	  offset=dissect_gsm_map_er_ATSI_NotAllowedParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 61: /* ATM-NotAllowedParam */
	  offset=dissect_gsm_map_er_ATM_NotAllowedParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  case 62: /* InformationNotAvailableParam */
	  offset=dissect_gsm_map_er_InformationNotAvailableParam(FALSE, tvb, offset, actx, tree, -1);
	  break;
  default:
    cause=proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnErrorData blob");
    proto_item_set_expert_flags(cause, PI_MALFORMED, PI_WARN);
    expert_add_info_format(actx->pinfo, cause, PI_MALFORMED, PI_WARN, "Unknown invokeData %d",errorCode);
    break;
  }
  return offset;
}

/* Private extension container for PLMN Data */
static void dissect_gsm_mapext_PlmnContainer(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) {
  proto_item    *item=NULL;
  proto_tree    *tree=NULL;
  asn1_ctx_t asn1_ctx;
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
  /* create display subtree for the protocol */
  if(parent_tree){
    item = proto_tree_add_text(parent_tree, tvb, 0, -1, "MAP Ext. Plmn Container");
    tree = proto_item_add_subtree(item, ett_gsm_old_PlmnContainer_U);
  }
  dissect_gsm_old_PlmnContainer(FALSE, tvb, 0, &asn1_ctx, tree, -1);
}


static guint8 gsmmap_pdu_type = 0;
static guint8 gsm_map_pdu_size = 0;

static int
dissect_gsm_map_GSMMAPPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_) {

  char *version_ptr;
  struct tcap_private_t * p_private_tcap;

  opcode = 0;
  application_context_version = 0;
  if (actx->pinfo->private_data != NULL){
    p_private_tcap=actx->pinfo->private_data;
    if (p_private_tcap->acv==TRUE ){
      version_ptr = strrchr(p_private_tcap->oid,'.');
      if (version_ptr){
		  application_context_version = atoi(version_ptr+1);
	  }
    }
  }

  gsmmap_pdu_type = tvb_get_guint8(tvb, offset)&0x0f;
  /* Get the length and add 2 */
  gsm_map_pdu_size = tvb_get_guint8(tvb, offset+1)+2;

  col_add_str(actx->pinfo->cinfo, COL_INFO, val_to_str(gsmmap_pdu_type, gsm_old_Component_vals, "Unknown GSM-MAP PDU (%u)"));
  col_append_fstr(actx->pinfo->cinfo, COL_INFO, " ");
  offset = dissect_gsm_old_Component(FALSE, tvb, 0, actx, tree, hf_gsm_map_old_Component_PDU);
/*
  offset = dissect_ber_choice(pinfo, tree, tvb, offset,
                              GSMMAPPDU_choice, hf_index, ett_gsm_map_GSMMAPPDU, NULL);
*/

  return offset;
}

static void
dissect_gsm_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
{
    proto_item		*item=NULL;
    proto_tree		*tree=NULL;
    /* Used for gsm_map TAP */
    static		gsm_map_tap_rec_t tap_rec;
    gint		op_idx;
	asn1_ctx_t asn1_ctx;

	asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);


    col_set_str(pinfo->cinfo, COL_PROTOCOL, "GSM MAP");

    top_tree = parent_tree;

    /* create display subtree for the protocol */
    if(parent_tree){
        item = proto_tree_add_item(parent_tree, proto_gsm_map, tvb, 0, -1, FALSE);
        tree = proto_item_add_subtree(item, ett_gsm_map);
    }

    dissect_gsm_map_GSMMAPPDU(FALSE, tvb, 0, &asn1_ctx, tree, -1);
    match_strval_idx(opcode, gsm_map_opr_code_strings, &op_idx);

    tap_rec.invoke = FALSE;
    if ( gsmmap_pdu_type  == 1 )
	tap_rec.invoke = TRUE;
    tap_rec.opr_code_idx = op_idx;
    tap_rec.size = gsm_map_pdu_size;

    tap_queue_packet(gsm_map_tap, pinfo, &tap_rec);
}

const value_string ssCode_vals[] = {
  { 0x00, "allSS - all SS" },
  { 0x10 ,"allLineIdentificationSS - all line identification SS" },
  { 0x11 ,"clip - calling line identification presentation" },
  { 0x12 ,"clir - calling line identification restriction" },
  { 0x13 ,"colp - connected line identification presentation" },
  { 0x14 ,"colr - connected line identification restriction" },
  { 0x15 ,"mci - malicious call identification" },
  { 0x18 ,"allNameIdentificationSS - all name identification SS" },
  { 0x19 ,"cnap - calling name presentation" },
  { 0x20 ,"allForwardingSS - all forwarding SS" },
  { 0x21 ,"cfu - call forwarding unconditional" },
  { 0x28 ,"allCondForwardingSS - all conditional forwarding SS" },
  { 0x29 ,"cfb - call forwarding busy" },
  { 0x2a ,"cfnry - call forwarding on no reply" },
  { 0x2b ,"cfnrc - call forwarding on mobile subscriber not reachable" },
  { 0x24 ,"cd - call deflection" },
  { 0x30 ,"allCallOfferingSS - all call offering SS includes also all forwarding SS" },
  { 0x31 ,"ect - explicit call transfer" },
  { 0x32 ,"mah - mobile access hunting" },
  { 0x40 ,"allCallCompletionSS - all Call completion SS" },
  { 0x41 ,"cw - call waiting" },
  { 0x42 ,"hold - call hold" },
  { 0x43 ,"ccbs-A - completion of call to busy subscribers, originating side" },
  { 0x44 ,"ccbs-B - completion of call to busy subscribers, destination side" },
  { 0x45 ,"mc - multicall" },
  { 0x50 ,"allMultiPartySS - all multiparty SS" },
  { 0x51 ,"multiPTY - multiparty" },
  { 0x60 ,"allCommunityOfInterestSS - all community of interest SS" },
  { 0x61 ,"cug - closed user group" },
  { 0x70 ,"allChargingSS - all charging SS" },
  { 0x71 ,"aoci - advice of charge information" },
  { 0x72 ,"aocc - advice of charge charging" },
  { 0x80 ,"allAdditionalInfoTransferSS - all additional information transfer SS" },
  { 0x81 ,"uus1 - UUS1 user-to-user signalling" },
  { 0x82 ,"uus2 - UUS2 user-to-user signalling" },
  { 0x83 ,"uus3 - UUS3 user-to-user signalling" },
  { 0x90 ,"allCallRestrictionSS - all Callrestriction SS" },
  { 0x91 ,"barringOfOutgoingCalls" },
  { 0x92 ,"baoc - barring of all outgoing calls" },
  { 0x93 ,"boic - barring of outgoing international calls" },
  { 0x94 ,"boicExHC - barring of outgoing international calls except those directed to the home PLMN" },
  { 0x99 ,"barringOfIncomingCalls" },
  { 0x9a ,"baic - barring of all incoming calls" },
  { 0x9b ,"bicRoam - barring of incoming calls when roaming outside home PLMN Country" },
  { 0xf0 ,"allPLMN-specificSS" },
  { 0xa0 ,"allCallPrioritySS - all call priority SS" },
  { 0xa1 ,"emlpp - enhanced Multilevel Precedence Pre-emption (EMLPP) service" },
  { 0xb0 ,"allLCSPrivacyException - all LCS Privacy Exception Classes" },
  { 0xb1 ,"universal - allow location by any LCS client" },
  { 0xb2 ,"callrelated - allow location by any value added LCS client to which a call is established from the target MS" },
  { 0xb3 ,"callunrelated - allow location by designated external value added LCS clients" },
  { 0xb4 ,"plmnoperator - allow location by designated PLMN operator LCS clients" },
  { 0xb5 ,"serviceType - allow location by LCS clients of a designated LCS service type" },
  { 0xc0 ,"allMOLR-SS - all Mobile Originating Location Request Classes" },
  { 0xc1 ,"basicSelfLocation - allow an MS to request its own location" },
  { 0xc2 ,"autonomousSelfLocation - allow an MS to perform self location without interaction with the PLMN for a predetermined period of time" },
  { 0xc3 ,"transferToThirdParty - allow an MS to request transfer of its location to another LCS client" },

  { 0xf1 ,"plmn-specificSS-1" },
  { 0xf2 ,"plmn-specificSS-2" },
  { 0xf3 ,"plmn-specificSS-3" },
  { 0xf4 ,"plmn-specificSS-4" },
  { 0xf5 ,"plmn-specificSS-5" },
  { 0xf6 ,"plmn-specificSS-6" },
  { 0xf7 ,"plmn-specificSS-7" },
  { 0xf8 ,"plmn-specificSS-8" },
  { 0xf9 ,"plmn-specificSS-9" },
  { 0xfa ,"plmn-specificSS-a" },
  { 0xfb ,"plmn-specificSS-b" },
  { 0xfc ,"plmn-specificSS-c" },
  { 0xfd ,"plmn-specificSS-d" },
  { 0xfe ,"plmn-specificSS-e" },
  { 0xff ,"plmn-specificSS-f" },
  { 0, NULL }
};

static const value_string Teleservice_vals[] = {
{0x00, "allTeleservices" },
{0x10, "allSpeechTransmissionServices" },
{0x11, "telephony" },
{0x12, "emergencyCalls" },
{0x20, "allShortMessageServices" },
{0x21, "shortMessageMT-PP" },
{0x22, "shortMessageMO-PP" },
{0x60, "allFacsimileTransmissionServices" },
{0x61, "facsimileGroup3AndAlterSpeech" },
{0x62, "automaticFacsimileGroup3" },
{0x63, "facsimileGroup4" },

{0x70, "allDataTeleservices" },
{0x80, "allTeleservices-ExeptSMS" },

{0x90, "allVoiceGroupCallServices" },
{0x91, "voiceGroupCall" },
{0x92, "voiceBroadcastCall" },

{0xd0, "allPLMN-specificTS" },
{0xd1, "plmn-specificTS-1" },
{0xd2, "plmn-specificTS-2" },
{0xd3, "plmn-specificTS-3" },
{0xd4, "plmn-specificTS-4" },
{0xd5, "plmn-specificTS-5" },
{0xd6, "plmn-specificTS-6" },
{0xd7, "plmn-specificTS-7" },
{0xd8, "plmn-specificTS-8" },
{0xd9, "plmn-specificTS-9" },
{0xda, "plmn-specificTS-A" },
{0xdb, "plmn-specificTS-B" },
{0xdc, "plmn-specificTS-C" },
{0xdd, "plmn-specificTS-D" },
{0xde, "plmn-specificTS-E" },
{0xdf, "plmn-specificTS-F" },
  { 0, NULL }
};

static const value_string Bearerservice_vals[] = {
{0x00, "allBearerServices" },
{0x10, "allDataCDA-Services" },
{0x11, "dataCDA-300bps" },
{0x12, "dataCDA-1200bps" },
{0x13, "dataCDA-1200-75bps" },
{0x14, "dataCDA-2400bps" },
{0x15, "dataCDA-4800bps" },
{0x16, "dataCDA-9600bps" },
{0x17, "general-dataCDA" },

{0x18, "allDataCDS-Services" },
{0x1A, "dataCDS-1200bps" },
{0x1C, "dataCDS-2400bps" },
{0x1D, "dataCDS-4800bps" },
{0x1E, "dataCDS-9600bps" },
{0x1F, "general-dataCDS" },

{0x20, "allPadAccessCA-Services" },
{0x21, "padAccessCA-300bps" },
{0x22, "padAccessCA-1200bps" },
{0x23, "padAccessCA-1200-75bps" },
{0x24, "padAccessCA-2400bps" },
{0x25, "padAccessCA-4800bps" },
{0x26, "padAccessCA-9600bps" },
{0x27, "general-padAccessCA" },

{0x28, "allDataPDS-Services" },
{0x2C, "dataPDS-2400bps" },
{0x2D, "dataPDS-4800bps" },
{0x2E, "dataPDS-9600bps" },
{0x2F, "general-dataPDS" },

{0x30, "allAlternateSpeech-DataCDA" },
{0x38, "allAlternateSpeech-DataCDS" },
{0x40, "allSpeechFollowedByDataCDA" },
{0x48, "allSpeechFollowedByDataCDS" },

{0x50, "allDataCircuitAsynchronous" },
{0x60, "allAsynchronousServices" },
{0x58, "allDataCircuitSynchronous" },
{0x68, "allSynchronousServices" },

{0xD0, "allPLMN-specificBS" },
{0xD1, "plmn-specificBS-1" },
{0xD2, "plmn-specificBS-2" },
{0xD3, "plmn-specificBS-3" },
{0xD4, "plmn-specificBS-4" },
{0xD5, "plmn-specificBS-5" },
{0xD6, "plmn-specificBS-6" },
{0xD7, "plmn-specificBS-7" },
{0xD8, "plmn-specificBS-8" },
{0xD9, "plmn-specificBS-9" },
{0xDA, "plmn-specificBS-A" },
{0xDB, "plmn-specificBS-B" },
{0xDC, "plmn-specificBS-C" },
{0xDD, "plmn-specificBS-D" },
{0xDE, "plmn-specificBS-E" },
{0xDF, "plmn-specificBS-F" },

{ 0, NULL }
};

/* ForwardingOptions

-- bit 8: notification to forwarding party
-- 0 no notification
-- 1 notification
*/
static const true_false_string notification_value  = {
  "Notification",
  "No notification"
};
/*
-- bit 7: redirecting presentation
-- 0 no presentation
-- 1 presentation
*/
static const true_false_string redirecting_presentation_value  = {
  "Presentation",
  "No presentationn"
};
/*
-- bit 6: notification to calling party
-- 0 no notification
-- 1 notification
*/
/*
-- bit 5: 0 (unused)
-- bits 43: forwarding reason
-- 00 ms not reachable
-- 01 ms busy
-- 10 no reply
-- 11 unconditional when used in a SRI Result,
-- or call deflection when used in a RCH Argument
*/
static const value_string forwarding_reason_values[] = {
{0x0, "ms not reachable" },
{0x1, "ms busy" },
{0x2, "no reply" },
{0x3, "unconditional when used in a SRI Result or call deflection when used in a RCH Argument" },
{ 0, NULL }
};
/*
-- bits 21: 00 (unused)
*/

static const value_string pdp_type_org_values[] = {
{0x0, "ETSI" },
{0x1, "IETF" },
{0xf, "Empty PDP type" },
{ 0, NULL }
};

static const value_string etsi_pdp_type_number_values[] = {
{0x0, "Reserved, used in earlier version of this protocol" },
{0x1, "PPP" },
{ 0, NULL }
};

static const value_string ietf_pdp_type_number_values[] = {
{0x21, "IPv4 Address" },
{0x57, "IPv6 Address" },
{ 0, NULL }
};

/*
ChargingCharacteristics ::= OCTET STRING (SIZE (2))
-- Octets are coded according to 3GPP TS 32.015.
-- From 3GPP TS 32.015.
--
-- Descriptions for the bits of the flag set:
--
-- Bit 1: H (Hot billing) := '00000001'B
-- Bit 2: F (Flat rate) := '00000010'B
-- Bit 3: P (Prepaid service) := '00000100'B
-- Bit 4: N (Normal billing) := '00001000'B
-- Bit 5: - (Reserved, set to 0) := '00010000'B
-- Bit 6: - (Reserved, set to 0) := '00100000'B
-- Bit 7: - (Reserved, set to 0) := '01000000'B
-- Bit 8: - (Reserved, set to 0) := '10000000'B
*/
static const value_string chargingcharacteristics_values[] = {
{0x1, "H (Hot billing)" },
{0x2, "F (Flat rate)" },
{0x4, "P (Prepaid service)" },
{0x8, "N (Normal billing)" },
{ 0, NULL }
};

/*--- proto_reg_handoff_gsm_map ---------------------------------------*/
static void range_delete_callback(guint32 ssn)
{
    if (ssn) {
	delete_itu_tcap_subdissector(ssn, map_handle);
    }
}

static void range_add_callback(guint32 ssn)
{
    if (ssn) {
	add_itu_tcap_subdissector(ssn, map_handle);
    }
}

void proto_reg_handoff_gsm_map(void) {

    static gboolean map_prefs_initialized = FALSE;
    static range_t *ssn_range;

    if (!map_prefs_initialized) {
        map_prefs_initialized = TRUE;
        data_handle = find_dissector("data");
        ranap_handle = find_dissector("ranap");
        dtap_handle = find_dissector("gsm_a_dtap");

        map_handle = find_dissector("gsm_map");
        register_ber_oid_dissector_handle("0.4.0.0.1.0.1.3", map_handle, proto_gsm_map,"networkLocUpContext-v3");
        register_ber_oid_dissector_handle("0.4.0.0.1.0.1.2", map_handle, proto_gsm_map,"networkLocUpContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.1.1", map_handle, proto_gsm_map,"networkLocUpContext-v1" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.2.3", map_handle, proto_gsm_map,"locationCancellationContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.2.2", map_handle, proto_gsm_map,"locationCancellationContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.2.1", map_handle, proto_gsm_map,"locationCancellationContext-v1" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.3.3", map_handle, proto_gsm_map,"roamingNumberEnquiryContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.3.2", map_handle, proto_gsm_map,"roamingNumberEnquiryContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.3.1", map_handle, proto_gsm_map,"roamingNumberEnquiryContext-v1" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.4.3", map_handle, proto_gsm_map,"istAlertingContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.5.3", map_handle, proto_gsm_map,"locationInfoRetrievalContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.5.2", map_handle, proto_gsm_map,"locationInfoRetrievalContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.5.1", map_handle, proto_gsm_map,"locationInfoRetrievalContext-v1" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.6.4", map_handle, proto_gsm_map,"callControlTransferContext-v4" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.6.3", map_handle, proto_gsm_map,"callControlTransferContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.7.3", map_handle, proto_gsm_map,"reportingContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.8.3", map_handle, proto_gsm_map,"callCompletionContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.9.3", map_handle, proto_gsm_map,"serviceTerminationContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.10.2", map_handle, proto_gsm_map,"resetContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.10.1", map_handle, proto_gsm_map,"resetContext-v1" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.11.3", map_handle, proto_gsm_map,"handoverControlContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.11.2", map_handle, proto_gsm_map,"handoverControlContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.11.1", map_handle, proto_gsm_map,"handoverControlContext-v1" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.12.3", map_handle, proto_gsm_map,"sIWFSAllocationContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.13.3", map_handle, proto_gsm_map,"equipmentMngtContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.13.2", map_handle, proto_gsm_map,"equipmentMngtContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.13.1", map_handle, proto_gsm_map,"equipmentMngtContext-v1" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.14.3", map_handle, proto_gsm_map,"infoRetrievalContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.14.2", map_handle, proto_gsm_map,"infoRetrievalContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.14.1", map_handle, proto_gsm_map,"infoRetrievalContext-v1" );
        /* fallback to infoRetrieval(14) version1(1) and not interVlrInfoRetrieval(15) version1(1) */
        /*register_ber_oid_dissector_handle("0.4.0.0.1.0.15.1", map_handle, proto_gsm_map,"map-ac interVlrInfoRetrieval(15) version1(1)" );*/
        register_ber_oid_dissector_handle("0.4.0.0.1.0.15.2", map_handle, proto_gsm_map,"interVlrInfoRetrievalContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.15.3", map_handle, proto_gsm_map,"interVlrInfoRetrievalContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.16.3", map_handle, proto_gsm_map,"subscriberDataMngtContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.16.2", map_handle, proto_gsm_map,"subscriberDataMngtContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.16.1", map_handle, proto_gsm_map,"subscriberDataMngtContext-v1" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.17.3", map_handle, proto_gsm_map,"tracingContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.17.2", map_handle, proto_gsm_map,"tracingContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.17.1", map_handle, proto_gsm_map,"tracingContext-v1" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.18.2", map_handle, proto_gsm_map,"networkFunctionalSsContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.18.1", map_handle, proto_gsm_map,"networkFunctionalSsContext-v1" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.19.2", map_handle, proto_gsm_map,"networkUnstructuredSsContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.20.3", map_handle, proto_gsm_map,"shortMsgGatewayContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.20.2", map_handle, proto_gsm_map,"shortMsgGatewayContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.20.1", map_handle, proto_gsm_map,"shortMsgGatewayContext-v1" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.21.3", map_handle, proto_gsm_map,"shortMsgMO-RelayContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.21.2", map_handle, proto_gsm_map,"shortMsgMO-RelayContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.21.1", map_handle, proto_gsm_map,"shortMsgRelayContext-v1" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.22.3", map_handle, proto_gsm_map,"subscriberDataModificationNotificationContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.23.2", map_handle, proto_gsm_map,"shortMsgAlertContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.23.1", map_handle, proto_gsm_map,"shortMsgAlertContext-v1" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.24.3", map_handle, proto_gsm_map,"mwdMngtContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.24.2", map_handle, proto_gsm_map,"mwdMngtContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.24.1", map_handle, proto_gsm_map,"mwdMngtContext-v1" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.25.3", map_handle, proto_gsm_map,"shortMsgMT-RelayContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.25.2", map_handle, proto_gsm_map,"shortMsgMT-RelayContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.26.2", map_handle, proto_gsm_map,"imsiRetrievalContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.27.2", map_handle, proto_gsm_map,"msPurgingContext-v2" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.27.3", map_handle, proto_gsm_map,"msPurgingContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.28.3", map_handle, proto_gsm_map,"subscriberInfoEnquiryContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.29.3", map_handle, proto_gsm_map,"anyTimeInfoEnquiryContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.31.3", map_handle, proto_gsm_map,"groupCallControlContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.32.3", map_handle, proto_gsm_map,"gprsLocationUpdateContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.33.4", map_handle, proto_gsm_map,"gprsLocationInfoRetrievalContext-v4" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.33.3", map_handle, proto_gsm_map,"gprsLocationInfoRetrievalContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.34.3", map_handle, proto_gsm_map,"failureReportContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.35.3", map_handle, proto_gsm_map,"gprsNotifyContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.36.3", map_handle, proto_gsm_map,"ss-InvocationNotificationContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.37.3", map_handle, proto_gsm_map,"locationSvcGatewayContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.38.3", map_handle, proto_gsm_map,"locationSvcEnquiryContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.39.3", map_handle, proto_gsm_map,"authenticationFailureReportContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.40.3", map_handle, proto_gsm_map,"secureTransportHandlingContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.41.3", map_handle, proto_gsm_map,"shortMsgMT-Relay-VGCS-Context-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.42.3", map_handle, proto_gsm_map,"mm-EventReportingContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.43.3", map_handle, proto_gsm_map,"anyTimeInfoHandlingContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.44.3", map_handle, proto_gsm_map,"resourceManagementContext-v3" );
        register_ber_oid_dissector_handle("0.4.0.0.1.0.45.3", map_handle, proto_gsm_map,"groupCallInfoRetrievalContext-v3" );
        /* Private extension container */
        register_ber_oid_dissector("1.3.12.2.1006.53.2.1.3", dissect_gsm_mapext_PlmnContainer, proto_gsm_map,"alcatel-E10-MAP-extension-PlmnContainer" );
    }
    else {
	range_foreach(ssn_range, range_delete_callback);
        g_free(ssn_range);
    }

    ssn_range = range_copy(global_ssn_range);
    range_foreach(ssn_range, range_add_callback);

}

/*--- proto_register_gsm_map -------------------------------------------*/
void proto_register_gsm_map(void) {
	module_t *gsm_map_module;

  /* List of fields */
  static hf_register_info hf[] = {
      { &hf_gsm_map_old_Component_PDU,
        { "Component", "gsm_map.old.Component",
          FT_UINT32, BASE_DEC, VALS(gsm_old_Component_vals), 0,
          NULL, HFILL }},
      { &hf_gsm_map_getPassword,
        { "getPassword", "gsm_map.getPassword",
          FT_UINT8, BASE_DEC, VALS(gsm_old_GetPasswordArg_vals), 0,
          NULL, HFILL }},
      { &hf_gsm_map_currentPassword,
        { "currentPassword", "gsm_map.currentPassword",
          FT_STRING, BASE_NONE, NULL, 0,
          NULL, HFILL }},
      { &hf_gsm_map_extension,
        { "Extension", "gsm_map.extension",
          FT_BOOLEAN, 8, TFS(&gsm_map_extension_value), 0x80,
          NULL, HFILL }},
      { &hf_gsm_map_nature_of_number,
        { "Nature of number", "gsm_map.nature_of_number",
          FT_UINT8, BASE_HEX|BASE_EXT_STRING, &gsm_map_nature_of_number_values_ext, 0x70,
          NULL, HFILL }},
      { &hf_gsm_map_number_plan,
        { "Number plan", "gsm_map.number_plan",
          FT_UINT8, BASE_HEX|BASE_EXT_STRING, &gsm_map_number_plan_values_ext, 0x0f,
          NULL, HFILL }},
      { &hf_gsm_map_isdn_address_digits,
        { "ISDN Address digits", "gsm_map.isdn.address.digits",
          FT_STRING, BASE_NONE, NULL, 0,
          NULL, HFILL }},
      { &hf_gsm_map_address_digits,
        { "Address digits", "gsm_map.address.digits",
          FT_STRING, BASE_NONE, NULL, 0,
          NULL, HFILL }},
      { &hf_gsm_map_servicecentreaddress_digits,
        { "ServiceCentreAddress digits", "gsm_map.servicecentreaddress_digits",
          FT_STRING, BASE_NONE, NULL, 0,
          NULL, HFILL }},
      { &hf_gsm_map_imsi_digits,
        { "IMSI digits", "gsm_map.imsi_digits",
          FT_STRING, BASE_NONE, NULL, 0,
          NULL, HFILL }},
      { &hf_gsm_map_TBCD_digits,
        { "TBCD digits", "gsm_map.imsi_digits",
          FT_STRING, BASE_NONE, NULL, 0,
          NULL, HFILL }},
      { &hf_gsm_map_Ss_Status_unused,
        { "Unused", "gsm_map.unused",
          FT_UINT8, BASE_HEX, NULL, 0xf0,
          NULL, HFILL }},
      { &hf_gsm_map_Ss_Status_q_bit,
        { "Q bit", "gsm_map.ss_status_q_bit",
          FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_q_bit_values), 0x08,
          NULL, HFILL }},
      { &hf_gsm_map_Ss_Status_p_bit,
        { "P bit", "gsm_map.ss_status_p_bit",
          FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_p_values), 0x04,
          NULL, HFILL }},
      { &hf_gsm_map_Ss_Status_r_bit,
        { "R bit", "gsm_map.ss_status_r_bit",
          FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_r_values), 0x02,
          NULL, HFILL }},
      { &hf_gsm_map_Ss_Status_a_bit,
        { "A bit", "gsm_map.ss_status_a_bit",
          FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_a_values), 0x01,
          NULL, HFILL }},
      { &hf_gsm_map_notification_to_forwarding_party,
        { "Notification to forwarding party", "gsm_map.notification_to_forwarding_party",
          FT_BOOLEAN, 8, TFS(&notification_value), 0x80,
          NULL, HFILL }},
      { &hf_gsm_map_redirecting_presentation,
        { "Redirecting presentation", "gsm_map.redirecting_presentation",
          FT_BOOLEAN, 8, TFS(&redirecting_presentation_value), 0x40,
          NULL, HFILL }},
      { &hf_gsm_map_notification_to_calling_party,
        { "Notification to calling party", "gsm_map.notification_to_clling_party",
          FT_BOOLEAN, 8, TFS(&notification_value), 0x20,
          NULL, HFILL }},
      { &hf_gsm_map_forwarding_reason,
        { "Forwarding reason", "gsm_map.forwarding_reason",
          FT_UINT8, BASE_HEX, VALS(forwarding_reason_values), 0x0c,
          NULL, HFILL }},
      { &hf_gsm_map_pdp_type_org,
        { "PDP Type Organization", "gsm_map.pdp_type_org",
          FT_UINT8, BASE_HEX, VALS(pdp_type_org_values), 0x0f,
          NULL, HFILL }},
      { &hf_gsm_map_etsi_pdp_type_number,
        { "PDP Type Number", "gsm_map.pdp_type_org",
          FT_UINT8, BASE_HEX, VALS(etsi_pdp_type_number_values), 0,
          "ETSI PDP Type Number", HFILL }},
      { &hf_gsm_map_ietf_pdp_type_number,
        { "PDP Type Number", "gsm_map.ietf_pdp_type_number",
          FT_UINT8, BASE_HEX, VALS(ietf_pdp_type_number_values), 0,
          "IETF PDP Type Number", HFILL }},
      { &hf_gsm_map_ext_qos_subscribed_pri,
        { "Allocation/Retention priority", "gsm_map.ext_qos_subscribed_pri",
          FT_UINT8, BASE_DEC, NULL, 0xff,
          NULL, HFILL }},
      { &hf_gsm_map_qos_traffic_cls,
        { "Traffic class", "gsm_map.qos.traffic_cls",
          FT_UINT8, BASE_DEC, VALS(gsm_a_qos_traffic_cls_vals), 0xe0,
          NULL, HFILL }},
      { &hf_gsm_map_qos_del_order,
        { "Delivery order", "gsm_map.qos.del_order",
          FT_UINT8, BASE_DEC, VALS(gsm_a_qos_traffic_cls_vals), 0x18,
          NULL, HFILL }},
      { &hf_gsm_map_qos_del_of_err_sdu,
        { "Delivery of erroneous SDUs", "gsm_map.qos.del_of_err_sdu",
          FT_UINT8, BASE_DEC, VALS(gsm_a_qos_del_of_err_sdu_vals), 0x03,
          NULL, HFILL }},
      { &hf_gsm_map_qos_ber,
        { "Residual Bit Error Rate (BER)", "gsm_map.qos.ber",
          FT_UINT8, BASE_DEC, VALS(gsm_a_qos_ber_vals), 0xf0,
          NULL, HFILL }},
      { &hf_gsm_map_qos_sdu_err_rat,
        { "SDU error ratio", "gsm_map.qos.sdu_err_rat",
          FT_UINT8, BASE_DEC, VALS(gsm_a_qos_sdu_err_rat_vals), 0x0f,
          NULL, HFILL }},
      { &hf_gsm_map_qos_traff_hdl_pri,
        { "Traffic handling priority", "gsm_map.qos.traff_hdl_pri",
          FT_UINT8, BASE_DEC, VALS(gsm_a_qos_traff_hdl_pri_vals), 0x03,
          NULL, HFILL }},

      { &hf_gsm_map_qos_max_sdu,
        { "Maximum SDU size", "gsm_map.qos.max_sdu",
          FT_UINT32, BASE_DEC, NULL, 0x0,
          NULL, HFILL }},
      { &hf_gsm_map_max_brate_ulink,
        { "Maximum bit rate for uplink in kbit/s", "gsm_map.qos.max_brate_ulink",
          FT_UINT32, BASE_DEC, NULL, 0x0,
          "Maximum bit rate for uplink", HFILL }},
      { &hf_gsm_map_max_brate_dlink,
        { "Maximum bit rate for downlink in kbit/s", "gsm_map.qos.max_brate_dlink",
          FT_UINT32, BASE_DEC, NULL, 0x0,
          "Maximum bit rate for downlink", HFILL }},
      { &hf_gsm_map_qos_transfer_delay,
        { "Transfer delay (Raw data see TS 24.008 for interpretation)", "gsm_map.qos.transfer_delay",
          FT_UINT8, BASE_DEC, NULL, 0xfc,
          "Transfer delay", HFILL }},
      { &hf_gsm_map_guaranteed_max_brate_ulink,
        { "Guaranteed bit rate for uplink in kbit/s", "gsm_map.qos.brate_ulink",
          FT_UINT32, BASE_DEC, NULL, 0x0,
          "Guaranteed bit rate for uplink", HFILL }},
      { &hf_gsm_map_guaranteed_max_brate_dlink,
        { "Guaranteed bit rate for downlink in kbit/s", "gsm_map.qos.brate_dlink",
          FT_UINT32, BASE_DEC, NULL, 0x0,
          "Guaranteed bit rate for downlink", HFILL }},
      { &hf_gsm_map_GSNAddress_IPv4,
        { "GSN-Address IPv4",  "gsm_map.gsnaddress_ipv4",
          FT_IPv4, BASE_NONE, NULL, 0,
          "IPAddress IPv4", HFILL }},
      { &hf_gsm_map_GSNAddress_IPv6,
        { "GSN Address IPv6",  "gsm_map.gsnaddress_ipv6",
          FT_IPv4, BASE_NONE, NULL, 0,
          "IPAddress IPv6", HFILL }},
      { &hf_gsm_map_ranap_service_Handover,
        { "service-Handover", "gsm_map.ranap.service_Handover",
          FT_UINT32, BASE_DEC, VALS(ranap_Service_Handover_vals), 0,
          "gsm_map.ranap.Service_Handover", HFILL }},
      { &hf_gsm_map_IntegrityProtectionInformation,
        { "IntegrityProtectionInformation", "gsm_map.ranap.IntegrityProtectionInformation",
          FT_NONE, BASE_NONE, NULL, 0,
          "gsm_map.ranap.IntegrityProtectionInformation", HFILL }},
      { &hf_gsm_map_EncryptionInformation,
        { "EncryptionInformation", "gsm_map.ranap.EncryptionInformation",
          FT_NONE, BASE_NONE, NULL, 0,
          "gsm_map.ranap.EncryptionInformation", HFILL }},
      { &hf_gsm_map_PlmnContainer_PDU,
        { "PlmnContainer", "gsm_map.PlmnContainer",
          FT_NONE, BASE_NONE, NULL, 0,
          "gsm_map.PlmnContainer", HFILL }},
      { &hf_gsm_map_ss_SS_UserData,
        { "SS-UserData", "gsm_ss.SS_UserData",
          FT_STRING, BASE_NONE, NULL, 0,
          "gsm_map.ss.SS_UserData", HFILL }},
      { &hf_gsm_map_cbs_coding_grp,
        { "Coding Group","gsm_map.cbs.coding_grp",
          FT_UINT8,BASE_DEC|BASE_EXT_STRING, &gsm_map_cbs_data_coding_scheme_coding_grp_vals_ext, 0xf0,
          NULL, HFILL }
      },
      { &hf_gsm_map_cbs_coding_grp0_lang,
        { "Language","gsm_map.cbs.coding_grp0_lang",
          FT_UINT8,BASE_DEC|BASE_EXT_STRING, &gsm_map_cbs_coding_grp0_lang_vals_ext, 0x0f,
          NULL, HFILL }
      },
      { &hf_gsm_map_cbs_coding_grp1_lang,
        { "Language","gsm_map.cbs.coding_grp1_lang",
          FT_UINT8,BASE_DEC|BASE_EXT_STRING, &gsm_map_cbs_coding_grp1_lang_vals_ext, 0x0f,
          NULL, HFILL }
      },
      { &hf_gsm_map_cbs_coding_grp2_lang,
        { "Language","gsm_map.cbs.coding_grp2_lang",
          FT_UINT8,BASE_DEC|BASE_EXT_STRING, &gsm_map_cbs_coding_grp2_lang_vals_ext, 0x0f,
          NULL, HFILL }
      },
      { &hf_gsm_map_cbs_coding_grp3_lang,
        { "Language","gsm_map.cbs.coding_grp3_lang",
          FT_UINT8,BASE_DEC|BASE_EXT_STRING, &gsm_map_cbs_coding_grp3_lang_vals_ext, 0x0f,
          NULL, HFILL }
      },
      { &hf_gsm_map_cbs_coding_grp4_7_comp,
        { "Compressed indicator","gsm_map.cbs.coding_grp4_7_comp",
          FT_BOOLEAN, 8, TFS(&gsm_map_cbs_coding_grp4_7_comp_vals), 0x20,
          NULL, HFILL }
      },
      { &hf_gsm_map_cbs_coding_grp4_7_class_ind,
        { "Message Class present","gsm_map.cbs.coding_grp4_7_class_ind",
          FT_BOOLEAN, 8, TFS(&gsm_map_cbs_coding_grp4_7_class_ind_vals), 0x10,
          NULL, HFILL }
      },
      { &hf_gsm_map_cbs_coding_grp4_7_char_set,
        { "Character set being used","gsm_map.cbs.coding_grp4_7_char_set",
          FT_UINT8,BASE_DEC, VALS(gsm_map_cbs_coding_grp4_7_char_set_vals), 0x0c,
          NULL, HFILL }
      },
      { &hf_gsm_map_cbs_coding_grp4_7_class,
        { "Message Class","gsm_map.cbs.coding_grp4_7_class",
          FT_UINT8,BASE_DEC, VALS(gsm_map_cbs_coding_grp4_7_class_vals), 0x03,
          NULL, HFILL }
      },
      { &hf_gsm_map_cbs_coding_grp15_mess_code,
        { "Message coding","gsm_map.cbs.cbs_coding_grp15_mess_code",
          FT_UINT8,BASE_DEC, VALS(gsm_map_cbs_coding_grp15_mess_code_vals), 0x04,
          NULL, HFILL }
      },
      { &hf_gsm_map_cbs_coding_grp15_class,
        { "Message Class","gsm_map.cbs.gsm_map_cbs_coding_grp15_class",
          FT_UINT8,BASE_DEC, VALS(gsm_map_cbs_coding_grp15_class_vals), 0x03,
          NULL, HFILL }
      },
      { &hf_gsm_map_tmsi,
        { "tmsi", "gsm_map.tmsi",
          FT_BYTES, BASE_NONE, NULL, 0,
          "gsm_map.TMSI", HFILL }},

      { &hf_gsm_map_ie_tag,
        { "Tag", "gsm_map.ie_tag",
          FT_UINT8, BASE_DEC, VALS(gsm_map_tag_vals), 0,
          "GSM 04.08 tag", HFILL }},
      { &hf_gsm_map_len,
        { "Length", "gsm_map.length",
          FT_UINT8, BASE_DEC, NULL, 0,
          NULL, HFILL }},
      { &hf_gsm_map_disc_par,
        { "Discrimination parameter", "gsm_map.disc_par",
          FT_UINT8, BASE_DEC, VALS(gsm_map_disc_par_vals), 0,
          NULL, HFILL }},
      { &hf_gsm_map_dlci,
        { "DLCI", "gsm_map.disc_par",
          FT_UINT8, BASE_DEC, NULL, 0,
          "Data Link Connection Indicator", HFILL }},


/*--- Included file: packet-gsm_map-hfarr.c ---*/
#line 1 "../../asn1/gsm_map/packet-gsm_map-hfarr.c"

/* --- Module MAP-ExtensionDataTypes --- --- ---                              */

    { &hf_gsm_map_privateExtensionList,
      { "privateExtensionList", "gsm_map.privateExtensionList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_pcs_Extensions,
      { "pcs-Extensions", "gsm_map.pcs_Extensions",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_slr_Arg_PCS_Extensions,
      { "slr-Arg-PCS-Extensions", "gsm_map.slr_Arg_PCS_Extensions",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_PrivateExtensionList_item,
      { "PrivateExtension", "gsm_map.PrivateExtension",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_extId,
      { "extId", "gsm_map.extId",
        FT_OID, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_extType,
      { "extType", "gsm_map.extType",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_na_ESRK_Request,
      { "na-ESRK-Request", "gsm_map.na_ESRK_Request",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},

/* --- Module MAP-CommonDataTypes --- --- ---                                 */

    { &hf_gsm_map_gsm_map_ISDN_AddressString_PDU,
      { "ISDN-AddressString", "gsm_map.ISDN_AddressString",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_protocolId,
      { "protocolId", "gsm_map.protocolId",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ProtocolId_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_signalInfo,
      { "signalInfo", "gsm_map.signalInfo",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_extensionContainer,
      { "extensionContainer", "gsm_map.extensionContainer",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ext_ProtocolId,
      { "ext-ProtocolId", "gsm_map.ext_ProtocolId",
        FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_ProtocolId_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_accessNetworkProtocolId,
      { "accessNetworkProtocolId", "gsm_map.accessNetworkProtocolId",
        FT_UINT32, BASE_DEC, VALS(gsm_map_AccessNetworkProtocolId_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_signalInfo_01,
      { "signalInfo", "gsm_map.signalInfo",
        FT_BYTES, BASE_NONE, NULL, 0,
        "LongSignalInfo", HFILL }},
    { &hf_gsm_map_imsi,
      { "imsi", "gsm_map.imsi",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_imsi_WithLMSI,
      { "imsi-WithLMSI", "gsm_map.imsi_WithLMSI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lmsi,
      { "lmsi", "gsm_map.lmsi",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_HLR_List_item,
      { "HLR-Id", "gsm_map.HLR_Id",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_naea_PreferredCIC,
      { "naea-PreferredCIC", "gsm_map.naea_PreferredCIC",
        FT_BYTES, BASE_NONE, NULL, 0,
        "NAEA_CIC", HFILL }},
    { &hf_gsm_map_msisdn,
      { "msisdn", "gsm_map.msisdn",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_externalAddress,
      { "externalAddress", "gsm_map.externalAddress",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_cellGlobalIdOrServiceAreaIdFixedLength,
      { "cellGlobalIdOrServiceAreaIdFixedLength", "gsm_map.cellGlobalIdOrServiceAreaIdFixedLength",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_laiFixedLength,
      { "laiFixedLength", "gsm_map.laiFixedLength",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_bearerService,
      { "bearerService", "gsm_map.bearerService",
        FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0,
        "BearerServiceCode", HFILL }},
    { &hf_gsm_map_teleservice,
      { "teleservice", "gsm_map.teleservice",
        FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
        "TeleserviceCode", HFILL }},
    { &hf_gsm_map_ext_BearerService,
      { "ext-BearerService", "gsm_map.ext_BearerService",
        FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0,
        "Ext_BearerServiceCode", HFILL }},
    { &hf_gsm_map_ext_Teleservice,
      { "ext-Teleservice", "gsm_map.ext_Teleservice",
        FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
        "Ext_TeleserviceCode", HFILL }},
    { &hf_gsm_map_maximumentitledPriority,
      { "maximumentitledPriority", "gsm_map.maximumentitledPriority",
        FT_UINT32, BASE_DEC, VALS(gsm_map_EMLPP_Priority_vals), 0,
        "EMLPP_Priority", HFILL }},
    { &hf_gsm_map_defaultPriority,
      { "defaultPriority", "gsm_map.defaultPriority",
        FT_UINT32, BASE_DEC, VALS(gsm_map_EMLPP_Priority_vals), 0,
        "EMLPP_Priority", HFILL }},
    { &hf_gsm_map_ss_Code,
      { "ss-Code", "gsm_map.ss_Code",
        FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_Status,
      { "ss-Status", "gsm_map.ss_Status",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Ext_SS_Status", HFILL }},
    { &hf_gsm_map_nbrSB,
      { "nbrSB", "gsm_map.nbrSB",
        FT_UINT32, BASE_DEC, NULL, 0,
        "MaxMC_Bearers", HFILL }},
    { &hf_gsm_map_nbrUser,
      { "nbrUser", "gsm_map.nbrUser",
        FT_UINT32, BASE_DEC, NULL, 0,
        "MC_Bearers", HFILL }},

/* --- Module MAP-SS-DataTypes --- --- ---                                    */

    { &hf_gsm_map_ss_ss_Code,
      { "ss-Code", "gsm_map.ss.ss_Code",
        FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_basicService,
      { "basicService", "gsm_map.ss.basicService",
        FT_UINT32, BASE_DEC, VALS(gsm_map_BasicServiceCode_vals), 0,
        "BasicServiceCode", HFILL }},
    { &hf_gsm_map_ss_forwardedToNumber,
      { "forwardedToNumber", "gsm_map.ss.forwardedToNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AddressString", HFILL }},
    { &hf_gsm_map_ss_forwardedToSubaddress,
      { "forwardedToSubaddress", "gsm_map.ss.forwardedToSubaddress",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_SubaddressString", HFILL }},
    { &hf_gsm_map_ss_noReplyConditionTime,
      { "noReplyConditionTime", "gsm_map.ss.noReplyConditionTime",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_defaultPriority,
      { "defaultPriority", "gsm_map.ss.defaultPriority",
        FT_UINT32, BASE_DEC, VALS(gsm_map_EMLPP_Priority_vals), 0,
        "EMLPP_Priority", HFILL }},
    { &hf_gsm_map_ss_nbrUser,
      { "nbrUser", "gsm_map.ss.nbrUser",
        FT_UINT32, BASE_DEC, NULL, 0,
        "MC_Bearers", HFILL }},
    { &hf_gsm_map_ss_longFTN_Supported,
      { "longFTN-Supported", "gsm_map.ss.longFTN_Supported",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_forwardingInfo,
      { "forwardingInfo", "gsm_map.ss.forwardingInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_callBarringInfo,
      { "callBarringInfo", "gsm_map.ss.callBarringInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_ss_Data,
      { "ss-Data", "gsm_map.ss.ss_Data",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_forwardingFeatureList,
      { "forwardingFeatureList", "gsm_map.ss.forwardingFeatureList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_ForwardingFeatureList_item,
      { "ForwardingFeature", "gsm_map.ss.ForwardingFeature",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_ss_Status,
      { "ss-Status", "gsm_map.ss.ss_Status",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_forwardedToNumber_01,
      { "forwardedToNumber", "gsm_map.ss.forwardedToNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ss_forwardingOptions,
      { "forwardingOptions", "gsm_map.ss.forwardingOptions",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_longForwardedToNumber,
      { "longForwardedToNumber", "gsm_map.ss.longForwardedToNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "FTN_AddressString", HFILL }},
    { &hf_gsm_map_ss_callBarringFeatureList,
      { "callBarringFeatureList", "gsm_map.ss.callBarringFeatureList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_CallBarringFeatureList_item,
      { "CallBarringFeature", "gsm_map.ss.CallBarringFeature",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_ss_SubscriptionOption,
      { "ss-SubscriptionOption", "gsm_map.ss.ss_SubscriptionOption",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ss_SS_SubscriptionOption_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_basicServiceGroupList,
      { "basicServiceGroupList", "gsm_map.ss.basicServiceGroupList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_cliRestrictionOption,
      { "cliRestrictionOption", "gsm_map.ss.cliRestrictionOption",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ss_CliRestrictionOption_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_overrideCategory,
      { "overrideCategory", "gsm_map.ss.overrideCategory",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ss_OverrideCategory_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_maximumEntitledPriority,
      { "maximumEntitledPriority", "gsm_map.ss.maximumEntitledPriority",
        FT_UINT32, BASE_DEC, VALS(gsm_map_EMLPP_Priority_vals), 0,
        "EMLPP_Priority", HFILL }},
    { &hf_gsm_map_ss_ccbs_FeatureList,
      { "ccbs-FeatureList", "gsm_map.ss.ccbs_FeatureList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_nbrSB,
      { "nbrSB", "gsm_map.ss.nbrSB",
        FT_UINT32, BASE_DEC, NULL, 0,
        "MaxMC_Bearers", HFILL }},
    { &hf_gsm_map_ss_nbrSN,
      { "nbrSN", "gsm_map.ss.nbrSN",
        FT_UINT32, BASE_DEC, NULL, 0,
        "MC_Bearers", HFILL }},
    { &hf_gsm_map_ss_CCBS_FeatureList_item,
      { "CCBS-Feature", "gsm_map.ss.CCBS_Feature",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_ccbs_Index,
      { "ccbs-Index", "gsm_map.ss.ccbs_Index",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_b_subscriberNumber,
      { "b-subscriberNumber", "gsm_map.ss.b_subscriberNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ss_b_subscriberSubaddress,
      { "b-subscriberSubaddress", "gsm_map.ss.b_subscriberSubaddress",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_SubaddressString", HFILL }},
    { &hf_gsm_map_ss_basicServiceGroup,
      { "basicServiceGroup", "gsm_map.ss.basicServiceGroup",
        FT_UINT32, BASE_DEC, VALS(gsm_map_BasicServiceCode_vals), 0,
        "BasicServiceCode", HFILL }},
    { &hf_gsm_map_ss_genericServiceInfo,
      { "genericServiceInfo", "gsm_map.ss.genericServiceInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_ussd_DataCodingScheme,
      { "ussd-DataCodingScheme", "gsm_map.ss.ussd_DataCodingScheme",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_ussd_String,
      { "ussd-String", "gsm_map.ss.ussd_String",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_alertingPattern,
      { "alertingPattern", "gsm_map.ss.alertingPattern",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_msisdn,
      { "msisdn", "gsm_map.ss.msisdn",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ss_SS_List_item,
      { "SS-Code", "gsm_map.ss.SS_Code",
        FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_BasicServiceGroupList_item,
      { "BasicServiceCode", "gsm_map.ss.BasicServiceCode",
        FT_UINT32, BASE_DEC, VALS(gsm_map_BasicServiceCode_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_imsi,
      { "imsi", "gsm_map.ss.imsi",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_ss_Event,
      { "ss-Event", "gsm_map.ss.ss_Event",
        FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
        "SS_Code", HFILL }},
    { &hf_gsm_map_ss_ss_EventSpecification,
      { "ss-EventSpecification", "gsm_map.ss.ss_EventSpecification",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_extensionContainer,
      { "extensionContainer", "gsm_map.ss.extensionContainer",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_ccbs_RequestState,
      { "ccbs-RequestState", "gsm_map.ss.ccbs_RequestState",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ss_CCBS_RequestState_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_SS_EventSpecification_item,
      { "AddressString", "gsm_map.ss.AddressString",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_ccbs_Data,
      { "ccbs-Data", "gsm_map.ss.ccbs_Data",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_ccbs_Feature,
      { "ccbs-Feature", "gsm_map.ss.ccbs_Feature",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_translatedB_Number,
      { "translatedB-Number", "gsm_map.ss.translatedB_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ss_serviceIndicator,
      { "serviceIndicator", "gsm_map.ss.serviceIndicator",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ss_callInfo,
      { "callInfo", "gsm_map.ss.callInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        "ExternalSignalInfo", HFILL }},
    { &hf_gsm_map_ss_networkSignalInfo,
      { "networkSignalInfo", "gsm_map.ss.networkSignalInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        "ExternalSignalInfo", HFILL }},
    { &hf_gsm_map_ss_ServiceIndicator_clir_invoked,
      { "clir-invoked", "gsm_map.ss.clir-invoked",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ss_ServiceIndicator_camel_invoked,
      { "camel-invoked", "gsm_map.ss.camel-invoked",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},

/* --- Module MAP-ER-DataTypes --- --- ---                                    */

    { &hf_gsm_map_er_roamingNotAllowedCause,
      { "roamingNotAllowedCause", "gsm_map.er.roamingNotAllowedCause",
        FT_UINT32, BASE_DEC, VALS(gsm_map_er_RoamingNotAllowedCause_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_extensionContainer,
      { "extensionContainer", "gsm_map.er.extensionContainer",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_additionalRoamingNotAllowedCause,
      { "additionalRoamingNotAllowedCause", "gsm_map.er.additionalRoamingNotAllowedCause",
        FT_UINT32, BASE_DEC, VALS(gsm_map_er_AdditionalRoamingNotAllowedCause_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_callBarringCause,
      { "callBarringCause", "gsm_map.er.callBarringCause",
        FT_UINT32, BASE_DEC, VALS(gsm_map_er_CallBarringCause_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_extensibleCallBarredParam,
      { "extensibleCallBarredParam", "gsm_map.er.extensibleCallBarredParam",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_unauthorisedMessageOriginator,
      { "unauthorisedMessageOriginator", "gsm_map.er.unauthorisedMessageOriginator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_cug_RejectCause,
      { "cug-RejectCause", "gsm_map.er.cug_RejectCause",
        FT_UINT32, BASE_DEC, VALS(gsm_map_er_CUG_RejectCause_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_ss_Code,
      { "ss-Code", "gsm_map.er.ss_Code",
        FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_basicService,
      { "basicService", "gsm_map.er.basicService",
        FT_UINT32, BASE_DEC, VALS(gsm_map_BasicServiceCode_vals), 0,
        "BasicServiceCode", HFILL }},
    { &hf_gsm_map_er_ss_Status,
      { "ss-Status", "gsm_map.er.ss_Status",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_sm_EnumeratedDeliveryFailureCause,
      { "sm-EnumeratedDeliveryFailureCause", "gsm_map.er.sm_EnumeratedDeliveryFailureCause",
        FT_UINT32, BASE_DEC, VALS(gsm_map_er_SM_EnumeratedDeliveryFailureCause_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_diagnosticInfo,
      { "diagnosticInfo", "gsm_map.er.diagnosticInfo",
        FT_BYTES, BASE_NONE, NULL, 0,
        "SignalInfo", HFILL }},
    { &hf_gsm_map_er_absentSubscriberDiagnosticSM,
      { "absentSubscriberDiagnosticSM", "gsm_map.er.absentSubscriberDiagnosticSM",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_additionalAbsentSubscriberDiagnosticSM,
      { "additionalAbsentSubscriberDiagnosticSM", "gsm_map.er.additionalAbsentSubscriberDiagnosticSM",
        FT_UINT32, BASE_DEC, NULL, 0,
        "AbsentSubscriberDiagnosticSM", HFILL }},
    { &hf_gsm_map_er_networkResource,
      { "networkResource", "gsm_map.er.networkResource",
        FT_UINT32, BASE_DEC, VALS(gsm_map_NetworkResource_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_extensibleSystemFailureParam,
      { "extensibleSystemFailureParam", "gsm_map.er.extensibleSystemFailureParam",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_additionalNetworkResource,
      { "additionalNetworkResource", "gsm_map.er.additionalNetworkResource",
        FT_UINT32, BASE_DEC, VALS(gsm_map_AdditionalNetworkResource_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_failureCauseParam,
      { "failureCauseParam", "gsm_map.er.failureCauseParam",
        FT_UINT32, BASE_DEC, VALS(gsm_map_er_FailureCauseParam_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_shapeOfLocationEstimateNotSupported,
      { "shapeOfLocationEstimateNotSupported", "gsm_map.er.shapeOfLocationEstimateNotSupported",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_neededLcsCapabilityNotSupportedInServingNode,
      { "neededLcsCapabilityNotSupportedInServingNode", "gsm_map.er.neededLcsCapabilityNotSupportedInServingNode",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_unknownSubscriberDiagnostic,
      { "unknownSubscriberDiagnostic", "gsm_map.er.unknownSubscriberDiagnostic",
        FT_UINT32, BASE_DEC, VALS(gsm_map_er_UnknownSubscriberDiagnostic_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_absentSubscriberReason,
      { "absentSubscriberReason", "gsm_map.er.absentSubscriberReason",
        FT_UINT32, BASE_DEC, VALS(gsm_map_er_AbsentSubscriberReason_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_ccbs_Possible,
      { "ccbs-Possible", "gsm_map.er.ccbs_Possible",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_ccbs_Busy,
      { "ccbs-Busy", "gsm_map.er.ccbs_Busy",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_gprsConnectionSuspended,
      { "gprsConnectionSuspended", "gsm_map.er.gprsConnectionSuspended",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_unauthorizedLCSClient_Diagnostic,
      { "unauthorizedLCSClient-Diagnostic", "gsm_map.er.unauthorizedLCSClient_Diagnostic",
        FT_UINT32, BASE_DEC, VALS(gsm_map_er_UnauthorizedLCSClient_Diagnostic_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_er_positionMethodFailure_Diagnostic,
      { "positionMethodFailure-Diagnostic", "gsm_map.er.positionMethodFailure_Diagnostic",
        FT_UINT32, BASE_DEC, VALS(gsm_map_er_PositionMethodFailure_Diagnostic_vals), 0,
        NULL, HFILL }},

/* --- Module MAP-SM-DataTypes --- --- ---                                    */

    { &hf_gsm_map_sm_msisdn,
      { "msisdn", "gsm_map.sm.msisdn",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_sm_sm_RP_PRI,
      { "sm-RP-PRI", "gsm_map.sm.sm_RP_PRI",
        FT_BOOLEAN, BASE_NONE, NULL, 0,
        "BOOLEAN", HFILL }},
    { &hf_gsm_map_sm_serviceCentreAddress,
      { "serviceCentreAddress", "gsm_map.sm.serviceCentreAddress",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AddressString", HFILL }},
    { &hf_gsm_map_sm_extensionContainer,
      { "extensionContainer", "gsm_map.sm.extensionContainer",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_gprsSupportIndicator,
      { "gprsSupportIndicator", "gsm_map.sm.gprsSupportIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_sm_RP_MTI,
      { "sm-RP-MTI", "gsm_map.sm.sm_RP_MTI",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_sm_RP_SMEA,
      { "sm-RP-SMEA", "gsm_map.sm.sm_RP_SMEA",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_sm_deliveryNotIntended,
      { "sm-deliveryNotIntended", "gsm_map.sm.sm_deliveryNotIntended",
        FT_UINT32, BASE_DEC, VALS(gsm_map_sm_SM_DeliveryNotIntended_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_imsi,
      { "imsi", "gsm_map.sm.imsi",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_locationInfoWithLMSI,
      { "locationInfoWithLMSI", "gsm_map.sm.locationInfoWithLMSI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_mwd_Set,
      { "mwd-Set", "gsm_map.sm.mwd_Set",
        FT_BOOLEAN, BASE_NONE, NULL, 0,
        "BOOLEAN", HFILL }},
    { &hf_gsm_map_sm_networkNode_Number,
      { "networkNode-Number", "gsm_map.sm.networkNode_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_sm_lmsi,
      { "lmsi", "gsm_map.sm.lmsi",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_gprsNodeIndicator,
      { "gprsNodeIndicator", "gsm_map.sm.gprsNodeIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_additional_Number,
      { "additional-Number", "gsm_map.sm.additional_Number",
        FT_UINT32, BASE_DEC, VALS(gsm_map_sm_Additional_Number_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_msc_Number,
      { "msc-Number", "gsm_map.sm.msc_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_sm_sgsn_Number,
      { "sgsn-Number", "gsm_map.sm.sgsn_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_sm_sm_RP_DA,
      { "sm-RP-DA", "gsm_map.sm.sm_RP_DA",
        FT_UINT32, BASE_DEC, VALS(gsm_map_sm_SM_RP_DA_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_sm_RP_OA,
      { "sm-RP-OA", "gsm_map.sm.sm_RP_OA",
        FT_UINT32, BASE_DEC, VALS(gsm_map_sm_SM_RP_OA_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_sm_RP_UI,
      { "sm-RP-UI", "gsm_map.sm.sm_RP_UI",
        FT_BYTES, BASE_NONE, NULL, 0,
        "SignalInfo", HFILL }},
    { &hf_gsm_map_sm_moreMessagesToSend,
      { "moreMessagesToSend", "gsm_map.sm.moreMessagesToSend",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_serviceCentreAddressDA,
      { "serviceCentreAddressDA", "gsm_map.sm.serviceCentreAddressDA",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AddressString", HFILL }},
    { &hf_gsm_map_sm_noSM_RP_DA,
      { "noSM-RP-DA", "gsm_map.sm.noSM_RP_DA",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_msisdn_01,
      { "msisdn", "gsm_map.sm.msisdn",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_serviceCentreAddressOA,
      { "serviceCentreAddressOA", "gsm_map.sm.serviceCentreAddressOA",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_noSM_RP_OA,
      { "noSM-RP-OA", "gsm_map.sm.noSM_RP_OA",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_sm_DeliveryOutcome,
      { "sm-DeliveryOutcome", "gsm_map.sm.sm_DeliveryOutcome",
        FT_UINT32, BASE_DEC, VALS(gsm_map_sm_SM_DeliveryOutcome_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_absentSubscriberDiagnosticSM,
      { "absentSubscriberDiagnosticSM", "gsm_map.sm.absentSubscriberDiagnosticSM",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_deliveryOutcomeIndicator,
      { "deliveryOutcomeIndicator", "gsm_map.sm.deliveryOutcomeIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_additionalSM_DeliveryOutcome,
      { "additionalSM-DeliveryOutcome", "gsm_map.sm.additionalSM_DeliveryOutcome",
        FT_UINT32, BASE_DEC, VALS(gsm_map_sm_SM_DeliveryOutcome_vals), 0,
        "SM_DeliveryOutcome", HFILL }},
    { &hf_gsm_map_sm_additionalAbsentSubscriberDiagnosticSM,
      { "additionalAbsentSubscriberDiagnosticSM", "gsm_map.sm.additionalAbsentSubscriberDiagnosticSM",
        FT_UINT32, BASE_DEC, NULL, 0,
        "AbsentSubscriberDiagnosticSM", HFILL }},
    { &hf_gsm_map_sm_ip_sm_gw_Indicator,
      { "ip-sm-gw-Indicator", "gsm_map.sm.ip_sm_gw_Indicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_ip_sm_gw_sm_deliveryOutcome,
      { "ip-sm-gw-sm-deliveryOutcome", "gsm_map.sm.ip_sm_gw_sm_deliveryOutcome",
        FT_UINT32, BASE_DEC, VALS(gsm_map_sm_SM_DeliveryOutcome_vals), 0,
        "SM_DeliveryOutcome", HFILL }},
    { &hf_gsm_map_sm_ip_sm_gw_absentSubscriberDiagnosticSM,
      { "ip-sm-gw-absentSubscriberDiagnosticSM", "gsm_map.sm.ip_sm_gw_absentSubscriberDiagnosticSM",
        FT_UINT32, BASE_DEC, NULL, 0,
        "AbsentSubscriberDiagnosticSM", HFILL }},
    { &hf_gsm_map_sm_storedMSISDN,
      { "storedMSISDN", "gsm_map.sm.storedMSISDN",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_sm_mw_Status,
      { "mw-Status", "gsm_map.sm.mw_Status",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_alertReason,
      { "alertReason", "gsm_map.sm.alertReason",
        FT_UINT32, BASE_DEC, VALS(gsm_map_sm_AlertReason_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_alertReasonIndicator,
      { "alertReasonIndicator", "gsm_map.sm.alertReasonIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_additionalAlertReasonIndicator,
      { "additionalAlertReasonIndicator", "gsm_map.sm.additionalAlertReasonIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_asciCallReference,
      { "asciCallReference", "gsm_map.sm.asciCallReference",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ASCI_CallReference", HFILL }},
    { &hf_gsm_map_sm_dispatcherList,
      { "dispatcherList", "gsm_map.sm.dispatcherList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_ongoingCall,
      { "ongoingCall", "gsm_map.sm.ongoingCall",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_DispatcherList_item,
      { "ISDN-AddressString", "gsm_map.sm.ISDN_AddressString",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_sm_MW_Status_sc_AddressNotIncluded,
      { "sc-AddressNotIncluded", "gsm_map.sm.sc-AddressNotIncluded",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_sm_MW_Status_mnrf_Set,
      { "mnrf-Set", "gsm_map.sm.mnrf-Set",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_sm_MW_Status_mcef_Set,
      { "mcef-Set", "gsm_map.sm.mcef-Set",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_sm_MW_Status_mnrg_Set,
      { "mnrg-Set", "gsm_map.sm.mnrg-Set",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},

/* --- Module MAP-OM-DataTypes --- --- ---                                    */

    { &hf_gsm_map_om_imsi,
      { "imsi", "gsm_map.om.imsi",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_om_traceReference,
      { "traceReference", "gsm_map.om.traceReference",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_om_traceType,
      { "traceType", "gsm_map.om.traceType",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_om_omc_Id,
      { "omc-Id", "gsm_map.om.omc_Id",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AddressString", HFILL }},
    { &hf_gsm_map_om_extensionContainer,
      { "extensionContainer", "gsm_map.om.extensionContainer",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_om_traceReference2,
      { "traceReference2", "gsm_map.om.traceReference2",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_om_traceDepthList,
      { "traceDepthList", "gsm_map.om.traceDepthList",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_om_traceNE_TypeList,
      { "traceNE-TypeList", "gsm_map.om.traceNE_TypeList",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_om_traceInterfaceList,
      { "traceInterfaceList", "gsm_map.om.traceInterfaceList",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_om_traceEventList,
      { "traceEventList", "gsm_map.om.traceEventList",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_om_traceCollectionEntity,
      { "traceCollectionEntity", "gsm_map.om.traceCollectionEntity",
        FT_BYTES, BASE_NONE, NULL, 0,
        "GSN_Address", HFILL }},
    { &hf_gsm_map_om_msc_s_TraceDepth,
      { "msc-s-TraceDepth", "gsm_map.om.msc_s_TraceDepth",
        FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0,
        "TraceDepth", HFILL }},
    { &hf_gsm_map_om_mgw_TraceDepth,
      { "mgw-TraceDepth", "gsm_map.om.mgw_TraceDepth",
        FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0,
        "TraceDepth", HFILL }},
    { &hf_gsm_map_om_sgsn_TraceDepth,
      { "sgsn-TraceDepth", "gsm_map.om.sgsn_TraceDepth",
        FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0,
        "TraceDepth", HFILL }},
    { &hf_gsm_map_om_ggsn_TraceDepth,
      { "ggsn-TraceDepth", "gsm_map.om.ggsn_TraceDepth",
        FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0,
        "TraceDepth", HFILL }},
    { &hf_gsm_map_om_rnc_TraceDepth,
      { "rnc-TraceDepth", "gsm_map.om.rnc_TraceDepth",
        FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0,
        "TraceDepth", HFILL }},
    { &hf_gsm_map_om_bmsc_TraceDepth,
      { "bmsc-TraceDepth", "gsm_map.om.bmsc_TraceDepth",
        FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0,
        "TraceDepth", HFILL }},
    { &hf_gsm_map_om_mme_TraceDepth,
      { "mme-TraceDepth", "gsm_map.om.mme_TraceDepth",
        FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0,
        "TraceDepth", HFILL }},
    { &hf_gsm_map_om_sgw_TraceDepth,
      { "sgw-TraceDepth", "gsm_map.om.sgw_TraceDepth",
        FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0,
        "TraceDepth", HFILL }},
    { &hf_gsm_map_om_pgw_TraceDepth,
      { "pgw-TraceDepth", "gsm_map.om.pgw_TraceDepth",
        FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0,
        "TraceDepth", HFILL }},
    { &hf_gsm_map_om_eNB_TraceDepth,
      { "eNB-TraceDepth", "gsm_map.om.eNB_TraceDepth",
        FT_UINT32, BASE_DEC, VALS(gsm_map_om_TraceDepth_vals), 0,
        "TraceDepth", HFILL }},
    { &hf_gsm_map_om_msc_s_List,
      { "msc-s-List", "gsm_map.om.msc_s_List",
        FT_BYTES, BASE_NONE, NULL, 0,
        "MSC_S_InterfaceList", HFILL }},
    { &hf_gsm_map_om_mgw_List,
      { "mgw-List", "gsm_map.om.mgw_List",
        FT_BYTES, BASE_NONE, NULL, 0,
        "MGW_InterfaceList", HFILL }},
    { &hf_gsm_map_om_sgsn_List,
      { "sgsn-List", "gsm_map.om.sgsn_List",
        FT_BYTES, BASE_NONE, NULL, 0,
        "SGSN_InterfaceList", HFILL }},
    { &hf_gsm_map_om_ggsn_List,
      { "ggsn-List", "gsm_map.om.ggsn_List",
        FT_BYTES, BASE_NONE, NULL, 0,
        "GGSN_InterfaceList", HFILL }},
    { &hf_gsm_map_om_rnc_List,
      { "rnc-List", "gsm_map.om.rnc_List",
        FT_BYTES, BASE_NONE, NULL, 0,
        "RNC_InterfaceList", HFILL }},
    { &hf_gsm_map_om_bmsc_List,
      { "bmsc-List", "gsm_map.om.bmsc_List",
        FT_BYTES, BASE_NONE, NULL, 0,
        "BMSC_InterfaceList", HFILL }},
    { &hf_gsm_map_om_mme_List,
      { "mme-List", "gsm_map.om.mme_List",
        FT_BYTES, BASE_NONE, NULL, 0,
        "MME_InterfaceList", HFILL }},
    { &hf_gsm_map_om_sgw_List,
      { "sgw-List", "gsm_map.om.sgw_List",
        FT_BYTES, BASE_NONE, NULL, 0,
        "SGW_InterfaceList", HFILL }},
    { &hf_gsm_map_om_pgw_List,
      { "pgw-List", "gsm_map.om.pgw_List",
        FT_BYTES, BASE_NONE, NULL, 0,
        "PGW_InterfaceList", HFILL }},
    { &hf_gsm_map_om_eNB_List,
      { "eNB-List", "gsm_map.om.eNB_List",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ENB_InterfaceList", HFILL }},
    { &hf_gsm_map_om_msc_s_List_01,
      { "msc-s-List", "gsm_map.om.msc_s_List",
        FT_BYTES, BASE_NONE, NULL, 0,
        "MSC_S_EventList", HFILL }},
    { &hf_gsm_map_om_mgw_List_01,
      { "mgw-List", "gsm_map.om.mgw_List",
        FT_BYTES, BASE_NONE, NULL, 0,
        "MGW_EventList", HFILL }},
    { &hf_gsm_map_om_sgsn_List_01,
      { "sgsn-List", "gsm_map.om.sgsn_List",
        FT_BYTES, BASE_NONE, NULL, 0,
        "SGSN_EventList", HFILL }},
    { &hf_gsm_map_om_ggsn_List_01,
      { "ggsn-List", "gsm_map.om.ggsn_List",
        FT_BYTES, BASE_NONE, NULL, 0,
        "GGSN_EventList", HFILL }},
    { &hf_gsm_map_om_bmsc_List_01,
      { "bmsc-List", "gsm_map.om.bmsc_List",
        FT_BYTES, BASE_NONE, NULL, 0,
        "BMSC_EventList", HFILL }},
    { &hf_gsm_map_om_mme_List_01,
      { "mme-List", "gsm_map.om.mme_List",
        FT_BYTES, BASE_NONE, NULL, 0,
        "MME_EventList", HFILL }},
    { &hf_gsm_map_om_sgw_List_01,
      { "sgw-List", "gsm_map.om.sgw_List",
        FT_BYTES, BASE_NONE, NULL, 0,
        "SGW_EventList", HFILL }},
    { &hf_gsm_map_om_pgw_List_01,
      { "pgw-List", "gsm_map.om.pgw_List",
        FT_BYTES, BASE_NONE, NULL, 0,
        "PGW_EventList", HFILL }},
    { &hf_gsm_map_om_traceRecordingSessionReference,
      { "traceRecordingSessionReference", "gsm_map.om.traceRecordingSessionReference",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_om_rnc_InterfaceList,
      { "rnc-InterfaceList", "gsm_map.om.rnc_InterfaceList",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_om_msc_s_InterfaceList,
      { "msc-s-InterfaceList", "gsm_map.om.msc_s_InterfaceList",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_om_msc_s_EventList,
      { "msc-s-EventList", "gsm_map.om.msc_s_EventList",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_om_mgw_InterfaceList,
      { "mgw-InterfaceList", "gsm_map.om.mgw_InterfaceList",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_om_mgw_EventList,
      { "mgw-EventList", "gsm_map.om.mgw_EventList",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_om_traceSupportIndicator,
      { "traceSupportIndicator", "gsm_map.om.traceSupportIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_om_TraceNE_TypeList_msc_s,
      { "msc-s", "gsm_map.om.msc-s",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_TraceNE_TypeList_mgw,
      { "mgw", "gsm_map.om.mgw",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_TraceNE_TypeList_sgsn,
      { "sgsn", "gsm_map.om.sgsn",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_om_TraceNE_TypeList_ggsn,
      { "ggsn", "gsm_map.om.ggsn",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_om_TraceNE_TypeList_rnc,
      { "rnc", "gsm_map.om.rnc",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_om_TraceNE_TypeList_bm_sc,
      { "bm-sc", "gsm_map.om.bm-sc",
        FT_BOOLEAN, 8, NULL, 0x04,
        NULL, HFILL }},
    { &hf_gsm_map_om_TraceNE_TypeList_mme,
      { "mme", "gsm_map.om.mme",
        FT_BOOLEAN, 8, NULL, 0x02,
        NULL, HFILL }},
    { &hf_gsm_map_om_TraceNE_TypeList_sgw,
      { "sgw", "gsm_map.om.sgw",
        FT_BOOLEAN, 8, NULL, 0x01,
        NULL, HFILL }},
    { &hf_gsm_map_om_TraceNE_TypeList_pgw,
      { "pgw", "gsm_map.om.pgw",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_TraceNE_TypeList_eNB,
      { "eNB", "gsm_map.om.eNB",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_MSC_S_InterfaceList_a,
      { "a", "gsm_map.om.a",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_MSC_S_InterfaceList_iu,
      { "iu", "gsm_map.om.iu",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_MSC_S_InterfaceList_mc,
      { "mc", "gsm_map.om.mc",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_om_MSC_S_InterfaceList_map_g,
      { "map-g", "gsm_map.om.map-g",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_om_MSC_S_InterfaceList_map_b,
      { "map-b", "gsm_map.om.map-b",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_om_MSC_S_InterfaceList_map_e,
      { "map-e", "gsm_map.om.map-e",
        FT_BOOLEAN, 8, NULL, 0x04,
        NULL, HFILL }},
    { &hf_gsm_map_om_MSC_S_InterfaceList_map_f,
      { "map-f", "gsm_map.om.map-f",
        FT_BOOLEAN, 8, NULL, 0x02,
        NULL, HFILL }},
    { &hf_gsm_map_om_MSC_S_InterfaceList_cap,
      { "cap", "gsm_map.om.cap",
        FT_BOOLEAN, 8, NULL, 0x01,
        NULL, HFILL }},
    { &hf_gsm_map_om_MSC_S_InterfaceList_map_d,
      { "map-d", "gsm_map.om.map-d",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_MSC_S_InterfaceList_map_c,
      { "map-c", "gsm_map.om.map-c",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_MGW_InterfaceList_mc,
      { "mc", "gsm_map.om.mc",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_MGW_InterfaceList_nb_up,
      { "nb-up", "gsm_map.om.nb-up",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_MGW_InterfaceList_iu_up,
      { "iu-up", "gsm_map.om.iu-up",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGSN_InterfaceList_gb,
      { "gb", "gsm_map.om.gb",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGSN_InterfaceList_iu,
      { "iu", "gsm_map.om.iu",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGSN_InterfaceList_gn,
      { "gn", "gsm_map.om.gn",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGSN_InterfaceList_map_gr,
      { "map-gr", "gsm_map.om.map-gr",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGSN_InterfaceList_map_gd,
      { "map-gd", "gsm_map.om.map-gd",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGSN_InterfaceList_map_gf,
      { "map-gf", "gsm_map.om.map-gf",
        FT_BOOLEAN, 8, NULL, 0x04,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGSN_InterfaceList_gs,
      { "gs", "gsm_map.om.gs",
        FT_BOOLEAN, 8, NULL, 0x02,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGSN_InterfaceList_ge,
      { "ge", "gsm_map.om.ge",
        FT_BOOLEAN, 8, NULL, 0x01,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGSN_InterfaceList_s3,
      { "s3", "gsm_map.om.s3",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGSN_InterfaceList_s4,
      { "s4", "gsm_map.om.s4",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGSN_InterfaceList_s6d,
      { "s6d", "gsm_map.om.s6d",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_om_GGSN_InterfaceList_gn,
      { "gn", "gsm_map.om.gn",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_GGSN_InterfaceList_gi,
      { "gi", "gsm_map.om.gi",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_GGSN_InterfaceList_gmb,
      { "gmb", "gsm_map.om.gmb",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_om_RNC_InterfaceList_iu,
      { "iu", "gsm_map.om.iu",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_RNC_InterfaceList_iur,
      { "iur", "gsm_map.om.iur",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_RNC_InterfaceList_iub,
      { "iub", "gsm_map.om.iub",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_om_RNC_InterfaceList_uu,
      { "uu", "gsm_map.om.uu",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_om_BMSC_InterfaceList_gmb,
      { "gmb", "gsm_map.om.gmb",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_MME_InterfaceList_s1_mme,
      { "s1-mme", "gsm_map.om.s1-mme",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_MME_InterfaceList_s3,
      { "s3", "gsm_map.om.s3",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_MME_InterfaceList_s6a,
      { "s6a", "gsm_map.om.s6a",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_om_MME_InterfaceList_s10,
      { "s10", "gsm_map.om.s10",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_om_MME_InterfaceList_s11,
      { "s11", "gsm_map.om.s11",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGW_InterfaceList_s4,
      { "s4", "gsm_map.om.s4",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGW_InterfaceList_s5,
      { "s5", "gsm_map.om.s5",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGW_InterfaceList_s8b,
      { "s8b", "gsm_map.om.s8b",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGW_InterfaceList_s11,
      { "s11", "gsm_map.om.s11",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGW_InterfaceList_gxc,
      { "gxc", "gsm_map.om.gxc",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_om_PGW_InterfaceList_s2a,
      { "s2a", "gsm_map.om.s2a",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_PGW_InterfaceList_s2b,
      { "s2b", "gsm_map.om.s2b",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_PGW_InterfaceList_s2c,
      { "s2c", "gsm_map.om.s2c",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_om_PGW_InterfaceList_s5,
      { "s5", "gsm_map.om.s5",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_om_PGW_InterfaceList_s6b,
      { "s6b", "gsm_map.om.s6b",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_om_PGW_InterfaceList_gx,
      { "gx", "gsm_map.om.gx",
        FT_BOOLEAN, 8, NULL, 0x04,
        NULL, HFILL }},
    { &hf_gsm_map_om_PGW_InterfaceList_s8b,
      { "s8b", "gsm_map.om.s8b",
        FT_BOOLEAN, 8, NULL, 0x02,
        NULL, HFILL }},
    { &hf_gsm_map_om_PGW_InterfaceList_sgi,
      { "sgi", "gsm_map.om.sgi",
        FT_BOOLEAN, 8, NULL, 0x01,
        NULL, HFILL }},
    { &hf_gsm_map_om_ENB_InterfaceList_s1_mme,
      { "s1-mme", "gsm_map.om.s1-mme",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_ENB_InterfaceList_x2,
      { "x2", "gsm_map.om.x2",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_ENB_InterfaceList_uu,
      { "uu", "gsm_map.om.uu",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_om_MSC_S_EventList_mo_mtCall,
      { "mo-mtCall", "gsm_map.om.mo-mtCall",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_MSC_S_EventList_mo_mt_sms,
      { "mo-mt-sms", "gsm_map.om.mo-mt-sms",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_MSC_S_EventList_lu_imsiAttach_imsiDetach,
      { "lu-imsiAttach-imsiDetach", "gsm_map.om.lu-imsiAttach-imsiDetach",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_om_MSC_S_EventList_handovers,
      { "handovers", "gsm_map.om.handovers",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_om_MSC_S_EventList_ss,
      { "ss", "gsm_map.om.ss",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_om_MGW_EventList_context,
      { "context", "gsm_map.om.context",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGSN_EventList_pdpContext,
      { "pdpContext", "gsm_map.om.pdpContext",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGSN_EventList_mo_mt_sms,
      { "mo-mt-sms", "gsm_map.om.mo-mt-sms",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGSN_EventList_rau_gprsAttach_gprsDetach,
      { "rau-gprsAttach-gprsDetach", "gsm_map.om.rau-gprsAttach-gprsDetach",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGSN_EventList_mbmsContext,
      { "mbmsContext", "gsm_map.om.mbmsContext",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_om_GGSN_EventList_pdpContext,
      { "pdpContext", "gsm_map.om.pdpContext",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_GGSN_EventList_mbmsContext,
      { "mbmsContext", "gsm_map.om.mbmsContext",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_BMSC_EventList_mbmsMulticastServiceActivation,
      { "mbmsMulticastServiceActivation", "gsm_map.om.mbmsMulticastServiceActivation",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_MME_EventList_ue_initiatedPDNconectivityRequest,
      { "ue-initiatedPDNconectivityRequest", "gsm_map.om.ue-initiatedPDNconectivityRequest",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_MME_EventList_serviceRequestts,
      { "serviceRequestts", "gsm_map.om.serviceRequestts",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_MME_EventList_initialAttachTrackingAreaUpdateDetach,
      { "initialAttachTrackingAreaUpdateDetach", "gsm_map.om.initialAttachTrackingAreaUpdateDetach",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_om_MME_EventList_ue_initiatedPDNdisconnection,
      { "ue-initiatedPDNdisconnection", "gsm_map.om.ue-initiatedPDNdisconnection",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_om_MME_EventList_bearerActivationModificationDeletion,
      { "bearerActivationModificationDeletion", "gsm_map.om.bearerActivationModificationDeletion",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_om_MME_EventList_handover,
      { "handover", "gsm_map.om.handover",
        FT_BOOLEAN, 8, NULL, 0x04,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGW_EventList_pdn_connectionCreation,
      { "pdn-connectionCreation", "gsm_map.om.pdn-connectionCreation",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGW_EventList_pdn_connectionTermination,
      { "pdn-connectionTermination", "gsm_map.om.pdn-connectionTermination",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_SGW_EventList_bearerActivationModificationDeletion,
      { "bearerActivationModificationDeletion", "gsm_map.om.bearerActivationModificationDeletion",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_om_PGW_EventList_pdn_connectionCreation,
      { "pdn-connectionCreation", "gsm_map.om.pdn-connectionCreation",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_om_PGW_EventList_pdn_connectionTermination,
      { "pdn-connectionTermination", "gsm_map.om.pdn-connectionTermination",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_om_PGW_EventList_bearerActivationModificationDeletion,
      { "bearerActivationModificationDeletion", "gsm_map.om.bearerActivationModificationDeletion",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},

/* --- Module MAP-MS-DataTypes --- --- ---                                    */

    { &hf_gsm_map_ms_imsi,
      { "imsi", "gsm_map.ms.imsi",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_msc_Number,
      { "msc-Number", "gsm_map.ms.msc_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ms_vlr_Number,
      { "vlr-Number", "gsm_map.ms.vlr_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ms_lmsi,
      { "lmsi", "gsm_map.ms.lmsi",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_extensionContainer,
      { "extensionContainer", "gsm_map.ms.extensionContainer",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_vlr_Capability,
      { "vlr-Capability", "gsm_map.ms.vlr_Capability",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_informPreviousNetworkEntity,
      { "informPreviousNetworkEntity", "gsm_map.ms.informPreviousNetworkEntity",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_cs_LCS_NotSupportedByUE,
      { "cs-LCS-NotSupportedByUE", "gsm_map.ms.cs_LCS_NotSupportedByUE",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_v_gmlc_Address,
      { "v-gmlc-Address", "gsm_map.ms.v_gmlc_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "GSN_Address", HFILL }},
    { &hf_gsm_map_ms_add_info,
      { "add-info", "gsm_map.ms.add_info",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_pagingArea,
      { "pagingArea", "gsm_map.ms.pagingArea",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_skipSubscriberDataUpdate,
      { "skipSubscriberDataUpdate", "gsm_map.ms.skipSubscriberDataUpdate",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_restorationIndicator,
      { "restorationIndicator", "gsm_map.ms.restorationIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_supportedCamelPhases,
      { "supportedCamelPhases", "gsm_map.ms.supportedCamelPhases",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_solsaSupportIndicator,
      { "solsaSupportIndicator", "gsm_map.ms.solsaSupportIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_istSupportIndicator,
      { "istSupportIndicator", "gsm_map.ms.istSupportIndicator",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_IST_SupportIndicator_vals), 0,
        "IST_SupportIndicator", HFILL }},
    { &hf_gsm_map_ms_superChargerSupportedInServingNetworkEntity,
      { "superChargerSupportedInServingNetworkEntity", "gsm_map.ms.superChargerSupportedInServingNetworkEntity",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_SuperChargerInfo_vals), 0,
        "SuperChargerInfo", HFILL }},
    { &hf_gsm_map_ms_longFTN_Supported,
      { "longFTN-Supported", "gsm_map.ms.longFTN_Supported",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_supportedLCS_CapabilitySets,
      { "supportedLCS-CapabilitySets", "gsm_map.ms.supportedLCS_CapabilitySets",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_offeredCamel4CSIs,
      { "offeredCamel4CSIs", "gsm_map.ms.offeredCamel4CSIs",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_supportedRAT_TypesIndicator,
      { "supportedRAT-TypesIndicator", "gsm_map.ms.supportedRAT_TypesIndicator",
        FT_BYTES, BASE_NONE, NULL, 0,
        "SupportedRAT_Types", HFILL }},
    { &hf_gsm_map_ms_longGroupID_Supported,
      { "longGroupID-Supported", "gsm_map.ms.longGroupID_Supported",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_sendSubscriberData,
      { "sendSubscriberData", "gsm_map.ms.sendSubscriberData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_subscriberDataStored,
      { "subscriberDataStored", "gsm_map.ms.subscriberDataStored",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AgeIndicator", HFILL }},
    { &hf_gsm_map_ms_hlr_Number,
      { "hlr-Number", "gsm_map.ms.hlr_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ms_add_Capability,
      { "add-Capability", "gsm_map.ms.add_Capability",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_pagingArea_Capability,
      { "pagingArea-Capability", "gsm_map.ms.pagingArea_Capability",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_imeisv,
      { "imeisv", "gsm_map.ms.imeisv",
        FT_BYTES, BASE_NONE, NULL, 0,
        "IMEI", HFILL }},
    { &hf_gsm_map_ms_PagingArea_item,
      { "LocationArea", "gsm_map.ms.LocationArea",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_LocationArea_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_laiFixedLength,
      { "laiFixedLength", "gsm_map.ms.laiFixedLength",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_lac,
      { "lac", "gsm_map.ms.lac",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_identity,
      { "identity", "gsm_map.ms.identity",
        FT_UINT32, BASE_DEC, VALS(gsm_map_Identity_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_cancellationType,
      { "cancellationType", "gsm_map.ms.cancellationType",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_CancellationType_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_typeOfUpdate,
      { "typeOfUpdate", "gsm_map.ms.typeOfUpdate",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_TypeOfUpdate_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_sgsn_Number,
      { "sgsn-Number", "gsm_map.ms.sgsn_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ms_freezeTMSI,
      { "freezeTMSI", "gsm_map.ms.freezeTMSI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_freezeP_TMSI,
      { "freezeP-TMSI", "gsm_map.ms.freezeP_TMSI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_freezeM_TMSI,
      { "freezeM-TMSI", "gsm_map.ms.freezeM_TMSI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_tmsi,
      { "tmsi", "gsm_map.ms.tmsi",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_numberOfRequestedVectors,
      { "numberOfRequestedVectors", "gsm_map.ms.numberOfRequestedVectors",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_segmentationProhibited,
      { "segmentationProhibited", "gsm_map.ms.segmentationProhibited",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_previous_LAI,
      { "previous-LAI", "gsm_map.ms.previous_LAI",
        FT_BYTES, BASE_NONE, NULL, 0,
        "LAIFixedLength", HFILL }},
    { &hf_gsm_map_ms_hopCounter,
      { "hopCounter", "gsm_map.ms.hopCounter",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_authenticationSetList,
      { "authenticationSetList", "gsm_map.ms.authenticationSetList",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_AuthenticationSetList_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_currentSecurityContext,
      { "currentSecurityContext", "gsm_map.ms.currentSecurityContext",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_CurrentSecurityContext_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_tripletList,
      { "tripletList", "gsm_map.ms.tripletList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_quintupletList,
      { "quintupletList", "gsm_map.ms.quintupletList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_TripletList_item,
      { "AuthenticationTriplet", "gsm_map.ms.AuthenticationTriplet",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_QuintupletList_item,
      { "AuthenticationQuintuplet", "gsm_map.ms.AuthenticationQuintuplet",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_rand,
      { "rand", "gsm_map.ms.rand",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_sres,
      { "sres", "gsm_map.ms.sres",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_kc,
      { "kc", "gsm_map.ms.kc",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_xres,
      { "xres", "gsm_map.ms.xres",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ck,
      { "ck", "gsm_map.ms.ck",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ik,
      { "ik", "gsm_map.ms.ik",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_autn,
      { "autn", "gsm_map.ms.autn",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_gsm_SecurityContextData,
      { "gsm-SecurityContextData", "gsm_map.ms.gsm_SecurityContextData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_umts_SecurityContextData,
      { "umts-SecurityContextData", "gsm_map.ms.umts_SecurityContextData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_cksn,
      { "cksn", "gsm_map.ms.cksn",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ksi,
      { "ksi", "gsm_map.ms.ksi",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_failureCause,
      { "failureCause", "gsm_map.ms.failureCause",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_FailureCause_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_re_attempt,
      { "re-attempt", "gsm_map.ms.re_attempt",
        FT_BOOLEAN, BASE_NONE, NULL, 0,
        "BOOLEAN", HFILL }},
    { &hf_gsm_map_ms_accessType,
      { "accessType", "gsm_map.ms.accessType",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_AccessType_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_sgsn_Address,
      { "sgsn-Address", "gsm_map.ms.sgsn_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "GSN_Address", HFILL }},
    { &hf_gsm_map_ms_sgsn_Capability,
      { "sgsn-Capability", "gsm_map.ms.sgsn_Capability",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ps_LCS_NotSupportedByUE,
      { "ps-LCS-NotSupportedByUE", "gsm_map.ms.ps_LCS_NotSupportedByUE",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_eps_info,
      { "eps-info", "gsm_map.ms.eps_info",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_EPS_Info_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_servingNodeTypeIndicator,
      { "servingNodeTypeIndicator", "gsm_map.ms.servingNodeTypeIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_usedRAT_Type,
      { "usedRAT-Type", "gsm_map.ms.usedRAT_Type",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_Used_RAT_Type_vals), 0,
        "Used_RAT_Type", HFILL }},
    { &hf_gsm_map_ms_gprsSubscriptionDataNotNeeded,
      { "gprsSubscriptionDataNotNeeded", "gsm_map.ms.gprsSubscriptionDataNotNeeded",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_nodeTypeIndicator,
      { "nodeTypeIndicator", "gsm_map.ms.nodeTypeIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_areaRestricted,
      { "areaRestricted", "gsm_map.ms.areaRestricted",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ue_reachableIndicator,
      { "ue-reachableIndicator", "gsm_map.ms.ue_reachableIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_epsSubscriptionDataNotNeeded,
      { "epsSubscriptionDataNotNeeded", "gsm_map.ms.epsSubscriptionDataNotNeeded",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_pdn_gw_update,
      { "pdn-gw-update", "gsm_map.ms.pdn_gw_update",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_isr_Information,
      { "isr-Information", "gsm_map.ms.isr_Information",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_apn,
      { "apn", "gsm_map.ms.apn",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_pdn_gw_Identity,
      { "pdn-gw-Identity", "gsm_map.ms.pdn_gw_Identity",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_contextId,
      { "contextId", "gsm_map.ms.contextId",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_gprsEnhancementsSupportIndicator,
      { "gprsEnhancementsSupportIndicator", "gsm_map.ms.gprsEnhancementsSupportIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_smsCallBarringSupportIndicator,
      { "smsCallBarringSupportIndicator", "gsm_map.ms.smsCallBarringSupportIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_supportedFeatures,
      { "supportedFeatures", "gsm_map.ms.supportedFeatures",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_t_adsDataRetrieval,
      { "t-adsDataRetrieval", "gsm_map.ms.t_adsDataRetrieval",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_homogeneousSupportOfIMSVoiceOverPSSessions,
      { "homogeneousSupportOfIMSVoiceOverPSSessions", "gsm_map.ms.homogeneousSupportOfIMSVoiceOverPSSessions",
        FT_BOOLEAN, BASE_NONE, NULL, 0,
        "BOOLEAN", HFILL }},
    { &hf_gsm_map_ms_sgsn_mmeSeparationSupported,
      { "sgsn-mmeSeparationSupported", "gsm_map.ms.sgsn_mmeSeparationSupported",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_an_APDU,
      { "an-APDU", "gsm_map.ms.an_APDU",
        FT_NONE, BASE_NONE, NULL, 0,
        "AccessNetworkSignalInfo", HFILL }},
    { &hf_gsm_map_ms_integrityProtectionInfo,
      { "integrityProtectionInfo", "gsm_map.ms.integrityProtectionInfo",
        FT_BYTES, BASE_NONE, NULL, 0,
        "IntegrityProtectionInformation", HFILL }},
    { &hf_gsm_map_ms_encryptionInfo,
      { "encryptionInfo", "gsm_map.ms.encryptionInfo",
        FT_BYTES, BASE_NONE, NULL, 0,
        "EncryptionInformation", HFILL }},
    { &hf_gsm_map_ms_keyStatus,
      { "keyStatus", "gsm_map.ms.keyStatus",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_KeyStatus_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_allowedGSM_Algorithms,
      { "allowedGSM-Algorithms", "gsm_map.ms.allowedGSM_Algorithms",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_allowedUMTS_Algorithms,
      { "allowedUMTS-Algorithms", "gsm_map.ms.allowedUMTS_Algorithms",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_radioResourceInformation,
      { "radioResourceInformation", "gsm_map.ms.radioResourceInformation",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_radioResourceList,
      { "radioResourceList", "gsm_map.ms.radioResourceList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_bssmap_ServiceHandover,
      { "bssmap-ServiceHandover", "gsm_map.ms.bssmap_ServiceHandover",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ranap_ServiceHandover,
      { "ranap-ServiceHandover", "gsm_map.ms.ranap_ServiceHandover",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_bssmap_ServiceHandoverList,
      { "bssmap-ServiceHandoverList", "gsm_map.ms.bssmap_ServiceHandoverList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_currentlyUsedCodec,
      { "currentlyUsedCodec", "gsm_map.ms.currentlyUsedCodec",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Codec", HFILL }},
    { &hf_gsm_map_ms_iuSupportedCodecsList,
      { "iuSupportedCodecsList", "gsm_map.ms.iuSupportedCodecsList",
        FT_NONE, BASE_NONE, NULL, 0,
        "SupportedCodecsList", HFILL }},
    { &hf_gsm_map_ms_rab_ConfigurationIndicator,
      { "rab-ConfigurationIndicator", "gsm_map.ms.rab_ConfigurationIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_iuSelectedCodec,
      { "iuSelectedCodec", "gsm_map.ms.iuSelectedCodec",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Codec", HFILL }},
    { &hf_gsm_map_ms_alternativeChannelType,
      { "alternativeChannelType", "gsm_map.ms.alternativeChannelType",
        FT_BYTES, BASE_NONE, NULL, 0,
        "RadioResourceInformation", HFILL }},
    { &hf_gsm_map_ms_tracePropagationList,
      { "tracePropagationList", "gsm_map.ms.tracePropagationList",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_aoipSupportedCodecsListAnchor,
      { "aoipSupportedCodecsListAnchor", "gsm_map.ms.aoipSupportedCodecsListAnchor",
        FT_NONE, BASE_NONE, NULL, 0,
        "AoIPCodecsList", HFILL }},
    { &hf_gsm_map_ms_aoipSelectedCodecTarget,
      { "aoipSelectedCodecTarget", "gsm_map.ms.aoipSelectedCodecTarget",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AoIPCodec", HFILL }},
    { &hf_gsm_map_ms_integrityProtectionAlgorithms,
      { "integrityProtectionAlgorithms", "gsm_map.ms.integrityProtectionAlgorithms",
        FT_BYTES, BASE_NONE, NULL, 0,
        "PermittedIntegrityProtectionAlgorithms", HFILL }},
    { &hf_gsm_map_ms_encryptionAlgorithms,
      { "encryptionAlgorithms", "gsm_map.ms.encryptionAlgorithms",
        FT_BYTES, BASE_NONE, NULL, 0,
        "PermittedEncryptionAlgorithms", HFILL }},
    { &hf_gsm_map_ms_targetCellId,
      { "targetCellId", "gsm_map.ms.targetCellId",
        FT_BYTES, BASE_NONE, NULL, 0,
        "GlobalCellId", HFILL }},
    { &hf_gsm_map_ms_ho_NumberNotRequired,
      { "ho-NumberNotRequired", "gsm_map.ms.ho_NumberNotRequired",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_targetRNCId,
      { "targetRNCId", "gsm_map.ms.targetRNCId",
        FT_BYTES, BASE_NONE, NULL, 0,
        "RNCId", HFILL }},
    { &hf_gsm_map_ms_multipleBearerRequested,
      { "multipleBearerRequested", "gsm_map.ms.multipleBearerRequested",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_rab_Id,
      { "rab-Id", "gsm_map.ms.rab_Id",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_asciCallReference,
      { "asciCallReference", "gsm_map.ms.asciCallReference",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ASCI_CallReference", HFILL }},
    { &hf_gsm_map_ms_geran_classmark,
      { "geran-classmark", "gsm_map.ms.geran_classmark",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_iuCurrentlyUsedCodec,
      { "iuCurrentlyUsedCodec", "gsm_map.ms.iuCurrentlyUsedCodec",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Codec", HFILL }},
    { &hf_gsm_map_ms_uesbi_Iu,
      { "uesbi-Iu", "gsm_map.ms.uesbi_Iu",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_BSSMAP_ServiceHandoverList_item,
      { "BSSMAP-ServiceHandoverInfo", "gsm_map.ms.BSSMAP_ServiceHandoverInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_RadioResourceList_item,
      { "RadioResource", "gsm_map.ms.RadioResource",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_handoverNumber,
      { "handoverNumber", "gsm_map.ms.handoverNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ms_relocationNumberList,
      { "relocationNumberList", "gsm_map.ms.relocationNumberList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_multicallBearerInfo,
      { "multicallBearerInfo", "gsm_map.ms.multicallBearerInfo",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_multipleBearerNotSupported,
      { "multipleBearerNotSupported", "gsm_map.ms.multipleBearerNotSupported",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_selectedUMTS_Algorithms,
      { "selectedUMTS-Algorithms", "gsm_map.ms.selectedUMTS_Algorithms",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_chosenRadioResourceInformation,
      { "chosenRadioResourceInformation", "gsm_map.ms.chosenRadioResourceInformation",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_iuAvailableCodecsList,
      { "iuAvailableCodecsList", "gsm_map.ms.iuAvailableCodecsList",
        FT_NONE, BASE_NONE, NULL, 0,
        "CodecList", HFILL }},
    { &hf_gsm_map_ms_aoipAvailableCodecsListMap,
      { "aoipAvailableCodecsListMap", "gsm_map.ms.aoipAvailableCodecsListMap",
        FT_NONE, BASE_NONE, NULL, 0,
        "AoIPCodecsList", HFILL }},
    { &hf_gsm_map_ms_integrityProtectionAlgorithm,
      { "integrityProtectionAlgorithm", "gsm_map.ms.integrityProtectionAlgorithm",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ChosenIntegrityProtectionAlgorithm", HFILL }},
    { &hf_gsm_map_ms_encryptionAlgorithm,
      { "encryptionAlgorithm", "gsm_map.ms.encryptionAlgorithm",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ChosenEncryptionAlgorithm", HFILL }},
    { &hf_gsm_map_ms_chosenChannelInfo,
      { "chosenChannelInfo", "gsm_map.ms.chosenChannelInfo",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_chosenSpeechVersion,
      { "chosenSpeechVersion", "gsm_map.ms.chosenSpeechVersion",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_targetMSC_Number,
      { "targetMSC-Number", "gsm_map.ms.targetMSC_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ms_selectedRab_Id,
      { "selectedRab-Id", "gsm_map.ms.selectedRab_Id",
        FT_UINT32, BASE_DEC, NULL, 0,
        "RAB_Id", HFILL }},
    { &hf_gsm_map_ms_selectedGSM_Algorithm,
      { "selectedGSM-Algorithm", "gsm_map.ms.selectedGSM_Algorithm",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_iUSelectedCodec,
      { "iUSelectedCodec", "gsm_map.ms.iUSelectedCodec",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Codec", HFILL }},
    { &hf_gsm_map_ms_codec1,
      { "codec1", "gsm_map.ms.codec1",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AoIPCodec", HFILL }},
    { &hf_gsm_map_ms_codec2,
      { "codec2", "gsm_map.ms.codec2",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AoIPCodec", HFILL }},
    { &hf_gsm_map_ms_codec3,
      { "codec3", "gsm_map.ms.codec3",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AoIPCodec", HFILL }},
    { &hf_gsm_map_ms_codec4,
      { "codec4", "gsm_map.ms.codec4",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AoIPCodec", HFILL }},
    { &hf_gsm_map_ms_codec5,
      { "codec5", "gsm_map.ms.codec5",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AoIPCodec", HFILL }},
    { &hf_gsm_map_ms_codec6,
      { "codec6", "gsm_map.ms.codec6",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AoIPCodec", HFILL }},
    { &hf_gsm_map_ms_codec7,
      { "codec7", "gsm_map.ms.codec7",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AoIPCodec", HFILL }},
    { &hf_gsm_map_ms_codec8,
      { "codec8", "gsm_map.ms.codec8",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AoIPCodec", HFILL }},
    { &hf_gsm_map_ms_utranCodecList,
      { "utranCodecList", "gsm_map.ms.utranCodecList",
        FT_NONE, BASE_NONE, NULL, 0,
        "CodecList", HFILL }},
    { &hf_gsm_map_ms_geranCodecList,
      { "geranCodecList", "gsm_map.ms.geranCodecList",
        FT_NONE, BASE_NONE, NULL, 0,
        "CodecList", HFILL }},
    { &hf_gsm_map_ms_codec1_01,
      { "codec1", "gsm_map.ms.codec1",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Codec", HFILL }},
    { &hf_gsm_map_ms_codec2_01,
      { "codec2", "gsm_map.ms.codec2",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Codec", HFILL }},
    { &hf_gsm_map_ms_codec3_01,
      { "codec3", "gsm_map.ms.codec3",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Codec", HFILL }},
    { &hf_gsm_map_ms_codec4_01,
      { "codec4", "gsm_map.ms.codec4",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Codec", HFILL }},
    { &hf_gsm_map_ms_codec5_01,
      { "codec5", "gsm_map.ms.codec5",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Codec", HFILL }},
    { &hf_gsm_map_ms_codec6_01,
      { "codec6", "gsm_map.ms.codec6",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Codec", HFILL }},
    { &hf_gsm_map_ms_codec7_01,
      { "codec7", "gsm_map.ms.codec7",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Codec", HFILL }},
    { &hf_gsm_map_ms_codec8_01,
      { "codec8", "gsm_map.ms.codec8",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Codec", HFILL }},
    { &hf_gsm_map_ms_RelocationNumberList_item,
      { "RelocationNumber", "gsm_map.ms.RelocationNumber",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_immediateResponsePreferred,
      { "immediateResponsePreferred", "gsm_map.ms.immediateResponsePreferred",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_re_synchronisationInfo,
      { "re-synchronisationInfo", "gsm_map.ms.re_synchronisationInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_requestingNodeType,
      { "requestingNodeType", "gsm_map.ms.requestingNodeType",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_RequestingNodeType_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_requestingPLMN_Id,
      { "requestingPLMN-Id", "gsm_map.ms.requestingPLMN_Id",
        FT_BYTES, BASE_NONE, NULL, 0,
        "PLMN_Id", HFILL }},
    { &hf_gsm_map_ms_numberOfRequestedAdditional_Vectors,
      { "numberOfRequestedAdditional-Vectors", "gsm_map.ms.numberOfRequestedAdditional_Vectors",
        FT_UINT32, BASE_DEC, NULL, 0,
        "NumberOfRequestedVectors", HFILL }},
    { &hf_gsm_map_ms_additionalVectorsAreForEPS,
      { "additionalVectorsAreForEPS", "gsm_map.ms.additionalVectorsAreForEPS",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_auts,
      { "auts", "gsm_map.ms.auts",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_eps_AuthenticationSetList,
      { "eps-AuthenticationSetList", "gsm_map.ms.eps_AuthenticationSetList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_EPS_AuthenticationSetList_item,
      { "EPC-AV", "gsm_map.ms.EPC_AV",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_kasme,
      { "kasme", "gsm_map.ms.kasme",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_imei,
      { "imei", "gsm_map.ms.imei",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_requestedEquipmentInfo,
      { "requestedEquipmentInfo", "gsm_map.ms.requestedEquipmentInfo",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_equipmentStatus,
      { "equipmentStatus", "gsm_map.ms.equipmentStatus",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_EquipmentStatus_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_bmuef,
      { "bmuef", "gsm_map.ms.bmuef",
        FT_NONE, BASE_NONE, NULL, 0,
        "UESBI_Iu", HFILL }},
    { &hf_gsm_map_ms_uesbi_IuA,
      { "uesbi-IuA", "gsm_map.ms.uesbi_IuA",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_uesbi_IuB,
      { "uesbi-IuB", "gsm_map.ms.uesbi_IuB",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_CSG_SubscriptionDataList_item,
      { "CSG-SubscriptionData", "gsm_map.ms.CSG_SubscriptionData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_csg_Id,
      { "csg-Id", "gsm_map.ms.csg_Id",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_expirationDate,
      { "expirationDate", "gsm_map.ms.expirationDate",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Time", HFILL }},
    { &hf_gsm_map_ms_apn_oi_Replacement,
      { "apn-oi-Replacement", "gsm_map.ms.apn_oi_Replacement",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_rfsp_id,
      { "rfsp-id", "gsm_map.ms.rfsp_id",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ambr,
      { "ambr", "gsm_map.ms.ambr",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_apn_ConfigurationProfile,
      { "apn-ConfigurationProfile", "gsm_map.ms.apn_ConfigurationProfile",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_stn_sr,
      { "stn-sr", "gsm_map.ms.stn_sr",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ms_defaultContext,
      { "defaultContext", "gsm_map.ms.defaultContext",
        FT_UINT32, BASE_DEC, NULL, 0,
        "ContextId", HFILL }},
    { &hf_gsm_map_ms_completeDataListIncluded,
      { "completeDataListIncluded", "gsm_map.ms.completeDataListIncluded",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_epsDataList,
      { "epsDataList", "gsm_map.ms.epsDataList",
        FT_UINT32, BASE_DEC, NULL, 0,
        "EPS_DataList", HFILL }},
    { &hf_gsm_map_ms_EPS_DataList_item,
      { "APN-Configuration", "gsm_map.ms.APN_Configuration",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_pdn_Type,
      { "pdn-Type", "gsm_map.ms.pdn_Type",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_servedPartyIP_IPv4_Address,
      { "servedPartyIP-IPv4-Address", "gsm_map.ms.servedPartyIP_IPv4_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "PDP_Address", HFILL }},
    { &hf_gsm_map_ms_eps_qos_Subscribed,
      { "eps-qos-Subscribed", "gsm_map.ms.eps_qos_Subscribed",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_pdn_gw_AllocationType,
      { "pdn-gw-AllocationType", "gsm_map.ms.pdn_gw_AllocationType",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_PDN_GW_AllocationType_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_vplmnAddressAllowed,
      { "vplmnAddressAllowed", "gsm_map.ms.vplmnAddressAllowed",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_chargingCharacteristics,
      { "chargingCharacteristics", "gsm_map.ms.chargingCharacteristics",
        FT_UINT16, BASE_DEC, VALS(chargingcharacteristics_values), 0x0f00,
        NULL, HFILL }},
    { &hf_gsm_map_ms_specificAPNInfoList,
      { "specificAPNInfoList", "gsm_map.ms.specificAPNInfoList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_servedPartyIP_IPv6_Address,
      { "servedPartyIP-IPv6-Address", "gsm_map.ms.servedPartyIP_IPv6_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "PDP_Address", HFILL }},
    { &hf_gsm_map_ms_qos_Class_Identifier,
      { "qos-Class-Identifier", "gsm_map.ms.qos_Class_Identifier",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_allocation_Retention_Priority,
      { "allocation-Retention-Priority", "gsm_map.ms.allocation_Retention_Priority",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_max_RequestedBandwidth_UL,
      { "max-RequestedBandwidth-UL", "gsm_map.ms.max_RequestedBandwidth_UL",
        FT_INT32, BASE_DEC, NULL, 0,
        "Bandwidth", HFILL }},
    { &hf_gsm_map_ms_max_RequestedBandwidth_DL,
      { "max-RequestedBandwidth-DL", "gsm_map.ms.max_RequestedBandwidth_DL",
        FT_INT32, BASE_DEC, NULL, 0,
        "Bandwidth", HFILL }},
    { &hf_gsm_map_ms_SpecificAPNInfoList_item,
      { "SpecificAPNInfo", "gsm_map.ms.SpecificAPNInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_priority_level,
      { "priority-level", "gsm_map.ms.priority_level",
        FT_INT32, BASE_DEC, NULL, 0,
        "INTEGER", HFILL }},
    { &hf_gsm_map_ms_pre_emption_capability,
      { "pre-emption-capability", "gsm_map.ms.pre_emption_capability",
        FT_BOOLEAN, BASE_NONE, NULL, 0,
        "BOOLEAN", HFILL }},
    { &hf_gsm_map_ms_pre_emption_vulnerability,
      { "pre-emption-vulnerability", "gsm_map.ms.pre_emption_vulnerability",
        FT_BOOLEAN, BASE_NONE, NULL, 0,
        "BOOLEAN", HFILL }},
    { &hf_gsm_map_ms_pdn_gw_ipv4_Address,
      { "pdn-gw-ipv4-Address", "gsm_map.ms.pdn_gw_ipv4_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "PDP_Address", HFILL }},
    { &hf_gsm_map_ms_pdn_gw_ipv6_Address,
      { "pdn-gw-ipv6-Address", "gsm_map.ms.pdn_gw_ipv6_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "PDP_Address", HFILL }},
    { &hf_gsm_map_ms_pdn_gw_name,
      { "pdn-gw-name", "gsm_map.ms.pdn_gw_name",
        FT_BYTES, BASE_NONE, NULL, 0,
        "FQDN", HFILL }},
    { &hf_gsm_map_ms_gmlc_List,
      { "gmlc-List", "gsm_map.ms.gmlc_List",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_lcs_PrivacyExceptionList,
      { "lcs-PrivacyExceptionList", "gsm_map.ms.lcs_PrivacyExceptionList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_molr_List,
      { "molr-List", "gsm_map.ms.molr_List",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_add_lcs_PrivacyExceptionList,
      { "add-lcs-PrivacyExceptionList", "gsm_map.ms.add_lcs_PrivacyExceptionList",
        FT_UINT32, BASE_DEC, NULL, 0,
        "LCS_PrivacyExceptionList", HFILL }},
    { &hf_gsm_map_ms_GMLC_List_item,
      { "ISDN-AddressString", "gsm_map.ms.ISDN_AddressString",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_GPRSDataList_item,
      { "PDP-Context", "gsm_map.ms.PDP_Context",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_pdp_ContextId,
      { "pdp-ContextId", "gsm_map.ms.pdp_ContextId",
        FT_UINT32, BASE_DEC, NULL, 0,
        "ContextId", HFILL }},
    { &hf_gsm_map_ms_pdp_Type,
      { "pdp-Type", "gsm_map.ms.pdp_Type",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_pdp_Address,
      { "pdp-Address", "gsm_map.ms.pdp_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_qos_Subscribed,
      { "qos-Subscribed", "gsm_map.ms.qos_Subscribed",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ext_QoS_Subscribed,
      { "ext-QoS-Subscribed", "gsm_map.ms.ext_QoS_Subscribed",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_pdp_ChargingCharacteristics,
      { "pdp-ChargingCharacteristics", "gsm_map.ms.pdp_ChargingCharacteristics",
        FT_UINT16, BASE_DEC, VALS(chargingcharacteristics_values), 0x0f00,
        "ChargingCharacteristics", HFILL }},
    { &hf_gsm_map_ms_ext2_QoS_Subscribed,
      { "ext2-QoS-Subscribed", "gsm_map.ms.ext2_QoS_Subscribed",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ext3_QoS_Subscribed,
      { "ext3-QoS-Subscribed", "gsm_map.ms.ext3_QoS_Subscribed",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ext4_QoS_Subscribed,
      { "ext4-QoS-Subscribed", "gsm_map.ms.ext4_QoS_Subscribed",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ext_pdp_Type,
      { "ext-pdp-Type", "gsm_map.ms.ext_pdp_Type",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ext_pdp_Address,
      { "ext-pdp-Address", "gsm_map.ms.ext_pdp_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "PDP_Address", HFILL }},
    { &hf_gsm_map_ms_gprsDataList,
      { "gprsDataList", "gsm_map.ms.gprsDataList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_gprs_CSI,
      { "gprs-CSI", "gsm_map.ms.gprs_CSI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_mo_sms_CSI,
      { "mo-sms-CSI", "gsm_map.ms.mo_sms_CSI",
        FT_NONE, BASE_NONE, NULL, 0,
        "SMS_CSI", HFILL }},
    { &hf_gsm_map_ms_mt_sms_CSI,
      { "mt-sms-CSI", "gsm_map.ms.mt_sms_CSI",
        FT_NONE, BASE_NONE, NULL, 0,
        "SMS_CSI", HFILL }},
    { &hf_gsm_map_ms_mt_smsCAMELTDP_CriteriaList,
      { "mt-smsCAMELTDP-CriteriaList", "gsm_map.ms.mt_smsCAMELTDP_CriteriaList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_mg_csi,
      { "mg-csi", "gsm_map.ms.mg_csi",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_gprs_CamelTDPDataList,
      { "gprs-CamelTDPDataList", "gsm_map.ms.gprs_CamelTDPDataList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_camelCapabilityHandling,
      { "camelCapabilityHandling", "gsm_map.ms.camelCapabilityHandling",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_notificationToCSE,
      { "notificationToCSE", "gsm_map.ms.notificationToCSE",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_csi_Active,
      { "csi-Active", "gsm_map.ms.csi_Active",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_GPRS_CamelTDPDataList_item,
      { "GPRS-CamelTDPData", "gsm_map.ms.GPRS_CamelTDPData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_gprs_TriggerDetectionPoint,
      { "gprs-TriggerDetectionPoint", "gsm_map.ms.gprs_TriggerDetectionPoint",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_GPRS_TriggerDetectionPoint_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_serviceKey,
      { "serviceKey", "gsm_map.ms.serviceKey",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_gsmSCF_Address,
      { "gsmSCF-Address", "gsm_map.ms.gsmSCF_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ms_defaultSessionHandling,
      { "defaultSessionHandling", "gsm_map.ms.defaultSessionHandling",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_DefaultGPRS_Handling_vals), 0,
        "DefaultGPRS_Handling", HFILL }},
    { &hf_gsm_map_ms_LSADataList_item,
      { "LSAData", "gsm_map.ms.LSAData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_lsaIdentity,
      { "lsaIdentity", "gsm_map.ms.lsaIdentity",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_lsaAttributes,
      { "lsaAttributes", "gsm_map.ms.lsaAttributes",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_lsaActiveModeIndicator,
      { "lsaActiveModeIndicator", "gsm_map.ms.lsaActiveModeIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_lsaOnlyAccessIndicator,
      { "lsaOnlyAccessIndicator", "gsm_map.ms.lsaOnlyAccessIndicator",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_LSAOnlyAccessIndicator_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_lsaDataList,
      { "lsaDataList", "gsm_map.ms.lsaDataList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_msisdn,
      { "msisdn", "gsm_map.ms.msisdn",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ms_category,
      { "category", "gsm_map.ms.category",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_subscriberStatus,
      { "subscriberStatus", "gsm_map.ms.subscriberStatus",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_SubscriberStatus_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_bearerServiceList,
      { "bearerServiceList", "gsm_map.ms.bearerServiceList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_teleserviceList,
      { "teleserviceList", "gsm_map.ms.teleserviceList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_provisionedSS,
      { "provisionedSS", "gsm_map.ms.provisionedSS",
        FT_UINT32, BASE_DEC, NULL, 0,
        "Ext_SS_InfoList", HFILL }},
    { &hf_gsm_map_ms_odb_Data,
      { "odb-Data", "gsm_map.ms.odb_Data",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_roamingRestrictionDueToUnsupportedFeature,
      { "roamingRestrictionDueToUnsupportedFeature", "gsm_map.ms.roamingRestrictionDueToUnsupportedFeature",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_regionalSubscriptionData,
      { "regionalSubscriptionData", "gsm_map.ms.regionalSubscriptionData",
        FT_UINT32, BASE_DEC, NULL, 0,
        "ZoneCodeList", HFILL }},
    { &hf_gsm_map_ms_vbsSubscriptionData,
      { "vbsSubscriptionData", "gsm_map.ms.vbsSubscriptionData",
        FT_UINT32, BASE_DEC, NULL, 0,
        "VBSDataList", HFILL }},
    { &hf_gsm_map_ms_vgcsSubscriptionData,
      { "vgcsSubscriptionData", "gsm_map.ms.vgcsSubscriptionData",
        FT_UINT32, BASE_DEC, NULL, 0,
        "VGCSDataList", HFILL }},
    { &hf_gsm_map_ms_vlrCamelSubscriptionInfo,
      { "vlrCamelSubscriptionInfo", "gsm_map.ms.vlrCamelSubscriptionInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_BearerServiceList_item,
      { "Ext-BearerServiceCode", "gsm_map.ms.Ext_BearerServiceCode",
        FT_UINT8, BASE_DEC, VALS(Bearerservice_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_TeleserviceList_item,
      { "Ext-TeleserviceCode", "gsm_map.ms.Ext_TeleserviceCode",
        FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_odb_GeneralData,
      { "odb-GeneralData", "gsm_map.ms.odb_GeneralData",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_odb_HPLMN_Data,
      { "odb-HPLMN-Data", "gsm_map.ms.odb_HPLMN_Data",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_Ext_SS_InfoList_item,
      { "Ext-SS-Info", "gsm_map.ms.Ext_SS_Info",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_Ext_SS_Info_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_forwardingInfo,
      { "forwardingInfo", "gsm_map.ms.forwardingInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        "Ext_ForwInfo", HFILL }},
    { &hf_gsm_map_ms_callBarringInfo,
      { "callBarringInfo", "gsm_map.ms.callBarringInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        "Ext_CallBarInfo", HFILL }},
    { &hf_gsm_map_ms_cug_Info,
      { "cug-Info", "gsm_map.ms.cug_Info",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ss_Data,
      { "ss-Data", "gsm_map.ms.ss_Data",
        FT_NONE, BASE_NONE, NULL, 0,
        "Ext_SS_Data", HFILL }},
    { &hf_gsm_map_ms_emlpp_Info,
      { "emlpp-Info", "gsm_map.ms.emlpp_Info",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ss_Code,
      { "ss-Code", "gsm_map.ms.ss_Code",
        FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_forwardingFeatureList,
      { "forwardingFeatureList", "gsm_map.ms.forwardingFeatureList",
        FT_UINT32, BASE_DEC, NULL, 0,
        "Ext_ForwFeatureList", HFILL }},
    { &hf_gsm_map_ms_Ext_ForwFeatureList_item,
      { "Ext-ForwFeature", "gsm_map.ms.Ext_ForwFeature",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_basicService,
      { "basicService", "gsm_map.ms.basicService",
        FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
        "Ext_BasicServiceCode", HFILL }},
    { &hf_gsm_map_ms_ss_Status,
      { "ss-Status", "gsm_map.ms.ss_Status",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Ext_SS_Status", HFILL }},
    { &hf_gsm_map_ms_forwardedToNumber,
      { "forwardedToNumber", "gsm_map.ms.forwardedToNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ms_forwardedToSubaddress,
      { "forwardedToSubaddress", "gsm_map.ms.forwardedToSubaddress",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_SubaddressString", HFILL }},
    { &hf_gsm_map_ms_forwardingOptions,
      { "forwardingOptions", "gsm_map.ms.forwardingOptions",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_noReplyConditionTime,
      { "noReplyConditionTime", "gsm_map.ms.noReplyConditionTime",
        FT_UINT32, BASE_DEC, NULL, 0,
        "Ext_NoRepCondTime", HFILL }},
    { &hf_gsm_map_ms_longForwardedToNumber,
      { "longForwardedToNumber", "gsm_map.ms.longForwardedToNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "FTN_AddressString", HFILL }},
    { &hf_gsm_map_ms_callBarringFeatureList,
      { "callBarringFeatureList", "gsm_map.ms.callBarringFeatureList",
        FT_UINT32, BASE_DEC, NULL, 0,
        "Ext_CallBarFeatureList", HFILL }},
    { &hf_gsm_map_ms_Ext_CallBarFeatureList_item,
      { "Ext-CallBarringFeature", "gsm_map.ms.Ext_CallBarringFeature",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_cug_SubscriptionList,
      { "cug-SubscriptionList", "gsm_map.ms.cug_SubscriptionList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_cug_FeatureList,
      { "cug-FeatureList", "gsm_map.ms.cug_FeatureList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_CUG_SubscriptionList_item,
      { "CUG-Subscription", "gsm_map.ms.CUG_Subscription",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_cug_Index,
      { "cug-Index", "gsm_map.ms.cug_Index",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_cug_Interlock,
      { "cug-Interlock", "gsm_map.ms.cug_Interlock",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_intraCUG_Options,
      { "intraCUG-Options", "gsm_map.ms.intraCUG_Options",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_IntraCUG_Options_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_basicServiceGroupList,
      { "basicServiceGroupList", "gsm_map.ms.basicServiceGroupList",
        FT_UINT32, BASE_DEC, NULL, 0,
        "Ext_BasicServiceGroupList", HFILL }},
    { &hf_gsm_map_ms_CUG_FeatureList_item,
      { "CUG-Feature", "gsm_map.ms.CUG_Feature",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_Ext_BasicServiceGroupList_item,
      { "Ext-BasicServiceCode", "gsm_map.ms.Ext_BasicServiceCode",
        FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_preferentialCUG_Indicator,
      { "preferentialCUG-Indicator", "gsm_map.ms.preferentialCUG_Indicator",
        FT_UINT32, BASE_DEC, NULL, 0,
        "CUG_Index", HFILL }},
    { &hf_gsm_map_ms_interCUG_Restrictions,
      { "interCUG-Restrictions", "gsm_map.ms.interCUG_Restrictions",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ss_SubscriptionOption,
      { "ss-SubscriptionOption", "gsm_map.ms.ss_SubscriptionOption",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ss_SS_SubscriptionOption_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_LCS_PrivacyExceptionList_item,
      { "LCS-PrivacyClass", "gsm_map.ms.LCS_PrivacyClass",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_notificationToMSUser,
      { "notificationToMSUser", "gsm_map.ms.notificationToMSUser",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_NotificationToMSUser_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_externalClientList,
      { "externalClientList", "gsm_map.ms.externalClientList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_plmnClientList,
      { "plmnClientList", "gsm_map.ms.plmnClientList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ext_externalClientList,
      { "ext-externalClientList", "gsm_map.ms.ext_externalClientList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_serviceTypeList,
      { "serviceTypeList", "gsm_map.ms.serviceTypeList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ExternalClientList_item,
      { "ExternalClient", "gsm_map.ms.ExternalClient",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_PLMNClientList_item,
      { "LCSClientInternalID", "gsm_map.ms.LCSClientInternalID",
        FT_UINT32, BASE_DEC, VALS(gsm_map_LCSClientInternalID_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_Ext_ExternalClientList_item,
      { "ExternalClient", "gsm_map.ms.ExternalClient",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_clientIdentity,
      { "clientIdentity", "gsm_map.ms.clientIdentity",
        FT_NONE, BASE_NONE, NULL, 0,
        "LCSClientExternalID", HFILL }},
    { &hf_gsm_map_ms_gmlc_Restriction,
      { "gmlc-Restriction", "gsm_map.ms.gmlc_Restriction",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_GMLC_Restriction_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ServiceTypeList_item,
      { "ServiceType", "gsm_map.ms.ServiceType",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_serviceTypeIdentity,
      { "serviceTypeIdentity", "gsm_map.ms.serviceTypeIdentity",
        FT_UINT32, BASE_DEC, VALS(gsm_map_LCSServiceTypeID_vals), 0,
        "LCSServiceTypeID", HFILL }},
    { &hf_gsm_map_ms_MOLR_List_item,
      { "MOLR-Class", "gsm_map.ms.MOLR_Class",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ZoneCodeList_item,
      { "ZoneCode", "gsm_map.ms.ZoneCode",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ss_List,
      { "ss-List", "gsm_map.ms.ss_List",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_regionalSubscriptionResponse,
      { "regionalSubscriptionResponse", "gsm_map.ms.regionalSubscriptionResponse",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_RegionalSubscriptionResponse_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_basicServiceList,
      { "basicServiceList", "gsm_map.ms.basicServiceList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_regionalSubscriptionIdentifier,
      { "regionalSubscriptionIdentifier", "gsm_map.ms.regionalSubscriptionIdentifier",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ZoneCode", HFILL }},
    { &hf_gsm_map_ms_vbsGroupIndication,
      { "vbsGroupIndication", "gsm_map.ms.vbsGroupIndication",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_vgcsGroupIndication,
      { "vgcsGroupIndication", "gsm_map.ms.vgcsGroupIndication",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_camelSubscriptionInfoWithdraw,
      { "camelSubscriptionInfoWithdraw", "gsm_map.ms.camelSubscriptionInfoWithdraw",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_gprsSubscriptionDataWithdraw,
      { "gprsSubscriptionDataWithdraw", "gsm_map.ms.gprsSubscriptionDataWithdraw",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_GPRSSubscriptionDataWithdraw_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_roamingRestrictedInSgsnDueToUnsuppportedFeature,
      { "roamingRestrictedInSgsnDueToUnsuppportedFeature", "gsm_map.ms.roamingRestrictedInSgsnDueToUnsuppportedFeature",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_lsaInformationWithdraw,
      { "lsaInformationWithdraw", "gsm_map.ms.lsaInformationWithdraw",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_LSAInformationWithdraw_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_gmlc_ListWithdraw,
      { "gmlc-ListWithdraw", "gsm_map.ms.gmlc_ListWithdraw",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_istInformationWithdraw,
      { "istInformationWithdraw", "gsm_map.ms.istInformationWithdraw",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_specificCSI_Withdraw,
      { "specificCSI-Withdraw", "gsm_map.ms.specificCSI_Withdraw",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_chargingCharacteristicsWithdraw,
      { "chargingCharacteristicsWithdraw", "gsm_map.ms.chargingCharacteristicsWithdraw",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_stn_srWithdraw,
      { "stn-srWithdraw", "gsm_map.ms.stn_srWithdraw",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_epsSubscriptionDataWithdraw,
      { "epsSubscriptionDataWithdraw", "gsm_map.ms.epsSubscriptionDataWithdraw",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_EPS_SubscriptionDataWithdraw_vals), 0,
        "EPS_SubscriptionDataWithdraw", HFILL }},
    { &hf_gsm_map_ms_apn_oi_replacementWithdraw,
      { "apn-oi-replacementWithdraw", "gsm_map.ms.apn_oi_replacementWithdraw",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_csg_SubscriptionDeleted,
      { "csg-SubscriptionDeleted", "gsm_map.ms.csg_SubscriptionDeleted",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_allGPRSData,
      { "allGPRSData", "gsm_map.ms.allGPRSData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_contextIdList,
      { "contextIdList", "gsm_map.ms.contextIdList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_allEPS_Data,
      { "allEPS-Data", "gsm_map.ms.allEPS_Data",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ContextIdList_item,
      { "ContextId", "gsm_map.ms.ContextId",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_allLSAData,
      { "allLSAData", "gsm_map.ms.allLSAData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_lsaIdentityList,
      { "lsaIdentityList", "gsm_map.ms.lsaIdentityList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_LSAIdentityList_item,
      { "LSAIdentity", "gsm_map.ms.LSAIdentity",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_BasicServiceList_item,
      { "Ext-BasicServiceCode", "gsm_map.ms.Ext_BasicServiceCode",
        FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_o_CSI,
      { "o-CSI", "gsm_map.ms.o_CSI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ss_CSI,
      { "ss-CSI", "gsm_map.ms.ss_CSI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_o_BcsmCamelTDP_CriteriaList,
      { "o-BcsmCamelTDP-CriteriaList", "gsm_map.ms.o_BcsmCamelTDP_CriteriaList",
        FT_UINT32, BASE_DEC, NULL, 0,
        "O_BcsmCamelTDPCriteriaList", HFILL }},
    { &hf_gsm_map_ms_tif_CSI,
      { "tif-CSI", "gsm_map.ms.tif_CSI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_m_CSI,
      { "m-CSI", "gsm_map.ms.m_CSI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_vt_CSI,
      { "vt-CSI", "gsm_map.ms.vt_CSI",
        FT_NONE, BASE_NONE, NULL, 0,
        "T_CSI", HFILL }},
    { &hf_gsm_map_ms_t_BCSM_CAMEL_TDP_CriteriaList,
      { "t-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.ms.t_BCSM_CAMEL_TDP_CriteriaList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_d_CSI,
      { "d-CSI", "gsm_map.ms.d_CSI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_MT_smsCAMELTDP_CriteriaList_item,
      { "MT-smsCAMELTDP-Criteria", "gsm_map.ms.MT_smsCAMELTDP_Criteria",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_sms_TriggerDetectionPoint,
      { "sms-TriggerDetectionPoint", "gsm_map.ms.sms_TriggerDetectionPoint",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_SMS_TriggerDetectionPoint_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_tpdu_TypeCriterion,
      { "tpdu-TypeCriterion", "gsm_map.ms.tpdu_TypeCriterion",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_TPDU_TypeCriterion_item,
      { "MT-SMS-TPDU-Type", "gsm_map.ms.MT_SMS_TPDU_Type",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_MT_SMS_TPDU_Type_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_dp_AnalysedInfoCriteriaList,
      { "dp-AnalysedInfoCriteriaList", "gsm_map.ms.dp_AnalysedInfoCriteriaList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_DP_AnalysedInfoCriteriaList_item,
      { "DP-AnalysedInfoCriterium", "gsm_map.ms.DP_AnalysedInfoCriterium",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_dialledNumber,
      { "dialledNumber", "gsm_map.ms.dialledNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ms_defaultCallHandling,
      { "defaultCallHandling", "gsm_map.ms.defaultCallHandling",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_DefaultCallHandling_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ss_CamelData,
      { "ss-CamelData", "gsm_map.ms.ss_CamelData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ss_EventList,
      { "ss-EventList", "gsm_map.ms.ss_EventList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SS_EventList_item,
      { "SS-Code", "gsm_map.ms.SS_Code",
        FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_o_BcsmCamelTDPDataList,
      { "o-BcsmCamelTDPDataList", "gsm_map.ms.o_BcsmCamelTDPDataList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_csiActive,
      { "csiActive", "gsm_map.ms.csiActive",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_O_BcsmCamelTDPDataList_item,
      { "O-BcsmCamelTDPData", "gsm_map.ms.O_BcsmCamelTDPData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_o_BcsmTriggerDetectionPoint,
      { "o-BcsmTriggerDetectionPoint", "gsm_map.ms.o_BcsmTriggerDetectionPoint",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_O_BcsmTriggerDetectionPoint_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_O_BcsmCamelTDPCriteriaList_item,
      { "O-BcsmCamelTDP-Criteria", "gsm_map.ms.O_BcsmCamelTDP_Criteria",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList_item,
      { "T-BCSM-CAMEL-TDP-Criteria", "gsm_map.ms.T_BCSM_CAMEL_TDP_Criteria",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_destinationNumberCriteria,
      { "destinationNumberCriteria", "gsm_map.ms.destinationNumberCriteria",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_basicServiceCriteria,
      { "basicServiceCriteria", "gsm_map.ms.basicServiceCriteria",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_callTypeCriteria,
      { "callTypeCriteria", "gsm_map.ms.callTypeCriteria",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_CallTypeCriteria_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_o_CauseValueCriteria,
      { "o-CauseValueCriteria", "gsm_map.ms.o_CauseValueCriteria",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_t_BCSM_TriggerDetectionPoint,
      { "t-BCSM-TriggerDetectionPoint", "gsm_map.ms.t_BCSM_TriggerDetectionPoint",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_T_BcsmTriggerDetectionPoint_vals), 0,
        "T_BcsmTriggerDetectionPoint", HFILL }},
    { &hf_gsm_map_ms_t_CauseValueCriteria,
      { "t-CauseValueCriteria", "gsm_map.ms.t_CauseValueCriteria",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_matchType,
      { "matchType", "gsm_map.ms.matchType",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_MatchType_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_destinationNumberList,
      { "destinationNumberList", "gsm_map.ms.destinationNumberList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_destinationNumberLengthList,
      { "destinationNumberLengthList", "gsm_map.ms.destinationNumberLengthList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_DestinationNumberList_item,
      { "ISDN-AddressString", "gsm_map.ms.ISDN_AddressString",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_DestinationNumberLengthList_item,
      { "DestinationNumberLengthList item", "gsm_map.ms.DestinationNumberLengthList_item",
        FT_UINT32, BASE_DEC, NULL, 0,
        "INTEGER_1_maxNumOfISDN_AddressDigits", HFILL }},
    { &hf_gsm_map_ms_BasicServiceCriteria_item,
      { "Ext-BasicServiceCode", "gsm_map.ms.Ext_BasicServiceCode",
        FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_O_CauseValueCriteria_item,
      { "CauseValue", "gsm_map.ms.CauseValue",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_T_CauseValueCriteria_item,
      { "CauseValue", "gsm_map.ms.CauseValue",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_sms_CAMEL_TDP_DataList,
      { "sms-CAMEL-TDP-DataList", "gsm_map.ms.sms_CAMEL_TDP_DataList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SMS_CAMEL_TDP_DataList_item,
      { "SMS-CAMEL-TDP-Data", "gsm_map.ms.SMS_CAMEL_TDP_Data",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_defaultSMS_Handling,
      { "defaultSMS-Handling", "gsm_map.ms.defaultSMS_Handling",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_DefaultSMS_Handling_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_mobilityTriggers,
      { "mobilityTriggers", "gsm_map.ms.mobilityTriggers",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_MobilityTriggers_item,
      { "MM-Code", "gsm_map.ms.MM_Code",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_t_BcsmCamelTDPDataList,
      { "t-BcsmCamelTDPDataList", "gsm_map.ms.t_BcsmCamelTDPDataList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_T_BcsmCamelTDPDataList_item,
      { "T-BcsmCamelTDPData", "gsm_map.ms.T_BcsmCamelTDPData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_t_BcsmTriggerDetectionPoint,
      { "t-BcsmTriggerDetectionPoint", "gsm_map.ms.t_BcsmTriggerDetectionPoint",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_T_BcsmTriggerDetectionPoint_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ggsn_Address,
      { "ggsn-Address", "gsm_map.ms.ggsn_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "GSN_Address", HFILL }},
    { &hf_gsm_map_ms_ggsn_Number,
      { "ggsn-Number", "gsm_map.ms.ggsn_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ms_mobileNotReachableReason,
      { "mobileNotReachableReason", "gsm_map.ms.mobileNotReachableReason",
        FT_UINT32, BASE_DEC, NULL, 0,
        "AbsentSubscriberDiagnosticSM", HFILL }},
    { &hf_gsm_map_ms_hlr_List,
      { "hlr-List", "gsm_map.ms.hlr_List",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_msNotReachable,
      { "msNotReachable", "gsm_map.ms.msNotReachable",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_VBSDataList_item,
      { "VoiceBroadcastData", "gsm_map.ms.VoiceBroadcastData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_VGCSDataList_item,
      { "VoiceGroupCallData", "gsm_map.ms.VoiceGroupCallData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_groupId,
      { "groupId", "gsm_map.ms.groupId",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_additionalSubscriptions,
      { "additionalSubscriptions", "gsm_map.ms.additionalSubscriptions",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_additionalInfo,
      { "additionalInfo", "gsm_map.ms.additionalInfo",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_longGroupId,
      { "longGroupId", "gsm_map.ms.longGroupId",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Long_GroupId", HFILL }},
    { &hf_gsm_map_ms_groupid,
      { "groupid", "gsm_map.ms.groupid",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_broadcastInitEntitlement,
      { "broadcastInitEntitlement", "gsm_map.ms.broadcastInitEntitlement",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_requestedInfo,
      { "requestedInfo", "gsm_map.ms.requestedInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_callPriority,
      { "callPriority", "gsm_map.ms.callPriority",
        FT_UINT32, BASE_DEC, VALS(gsm_map_EMLPP_Priority_vals), 0,
        "EMLPP_Priority", HFILL }},
    { &hf_gsm_map_ms_subscriberInfo,
      { "subscriberInfo", "gsm_map.ms.subscriberInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_locationInformation,
      { "locationInformation", "gsm_map.ms.locationInformation",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_subscriberState,
      { "subscriberState", "gsm_map.ms.subscriberState",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_SubscriberState_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_locationInformationGPRS,
      { "locationInformationGPRS", "gsm_map.ms.locationInformationGPRS",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ps_SubscriberState,
      { "ps-SubscriberState", "gsm_map.ms.ps_SubscriberState",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_PS_SubscriberState_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ms_Classmark2,
      { "ms-Classmark2", "gsm_map.ms.ms_Classmark2",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_gprs_MS_Class,
      { "gprs-MS-Class", "gsm_map.ms.gprs_MS_Class",
        FT_NONE, BASE_NONE, NULL, 0,
        "GPRSMSClass", HFILL }},
    { &hf_gsm_map_ms_mnpInfoRes,
      { "mnpInfoRes", "gsm_map.ms.mnpInfoRes",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_imsVoiceOverPS_SessionsIndication,
      { "imsVoiceOverPS-SessionsIndication", "gsm_map.ms.imsVoiceOverPS_SessionsIndication",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_IMS_VoiceOverPS_SessionsInd_vals), 0,
        "IMS_VoiceOverPS_SessionsInd", HFILL }},
    { &hf_gsm_map_ms_lastUE_ActivityTime,
      { "lastUE-ActivityTime", "gsm_map.ms.lastUE_ActivityTime",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Time", HFILL }},
    { &hf_gsm_map_ms_lastRAT_Type,
      { "lastRAT-Type", "gsm_map.ms.lastRAT_Type",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_Used_RAT_Type_vals), 0,
        "Used_RAT_Type", HFILL }},
    { &hf_gsm_map_ms_eps_SubscriberState,
      { "eps-SubscriberState", "gsm_map.ms.eps_SubscriberState",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_PS_SubscriberState_vals), 0,
        "PS_SubscriberState", HFILL }},
    { &hf_gsm_map_ms_locationInformationEPS,
      { "locationInformationEPS", "gsm_map.ms.locationInformationEPS",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_routeingNumber,
      { "routeingNumber", "gsm_map.ms.routeingNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_numberPortabilityStatus,
      { "numberPortabilityStatus", "gsm_map.ms.numberPortabilityStatus",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_NumberPortabilityStatus_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_mSNetworkCapability,
      { "mSNetworkCapability", "gsm_map.ms.mSNetworkCapability",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_mSRadioAccessCapability,
      { "mSRadioAccessCapability", "gsm_map.ms.mSRadioAccessCapability",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_locationInformation_01,
      { "locationInformation", "gsm_map.ms.locationInformation",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_subscriberState_01,
      { "subscriberState", "gsm_map.ms.subscriberState",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_currentLocation,
      { "currentLocation", "gsm_map.ms.currentLocation",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_requestedDomain,
      { "requestedDomain", "gsm_map.ms.requestedDomain",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_DomainType_vals), 0,
        "DomainType", HFILL }},
    { &hf_gsm_map_ms_imei_01,
      { "imei", "gsm_map.ms.imei",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ms_classmark,
      { "ms-classmark", "gsm_map.ms.ms_classmark",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_mnpRequestedInfo,
      { "mnpRequestedInfo", "gsm_map.ms.mnpRequestedInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_t_adsData,
      { "t-adsData", "gsm_map.ms.t_adsData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_requestedNodes,
      { "requestedNodes", "gsm_map.ms.requestedNodes",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ageOfLocationInformation,
      { "ageOfLocationInformation", "gsm_map.ms.ageOfLocationInformation",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_geographicalInformation,
      { "geographicalInformation", "gsm_map.ms.geographicalInformation",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_vlr_number,
      { "vlr-number", "gsm_map.ms.vlr_number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ms_locationNumber,
      { "locationNumber", "gsm_map.ms.locationNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_cellGlobalIdOrServiceAreaIdOrLAI,
      { "cellGlobalIdOrServiceAreaIdOrLAI", "gsm_map.ms.cellGlobalIdOrServiceAreaIdOrLAI",
        FT_UINT32, BASE_DEC, VALS(gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_selectedLSA_Id,
      { "selectedLSA-Id", "gsm_map.ms.selectedLSA_Id",
        FT_BYTES, BASE_NONE, NULL, 0,
        "LSAIdentity", HFILL }},
    { &hf_gsm_map_ms_geodeticInformation,
      { "geodeticInformation", "gsm_map.ms.geodeticInformation",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_currentLocationRetrieved,
      { "currentLocationRetrieved", "gsm_map.ms.currentLocationRetrieved",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_sai_Present,
      { "sai-Present", "gsm_map.ms.sai_Present",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_userCSGInformation,
      { "userCSGInformation", "gsm_map.ms.userCSGInformation",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_e_utranCellGlobalIdentity,
      { "e-utranCellGlobalIdentity", "gsm_map.ms.e_utranCellGlobalIdentity",
        FT_BYTES, BASE_NONE, NULL, 0,
        "OCTET_STRING_SIZE_7", HFILL }},
    { &hf_gsm_map_ms_trackingAreaIdentity,
      { "trackingAreaIdentity", "gsm_map.ms.trackingAreaIdentity",
        FT_BYTES, BASE_NONE, NULL, 0,
        "OCTET_STRING_SIZE_5", HFILL }},
    { &hf_gsm_map_ms_routeingAreaIdentity,
      { "routeingAreaIdentity", "gsm_map.ms.routeingAreaIdentity",
        FT_BYTES, BASE_NONE, NULL, 0,
        "RAIdentity", HFILL }},
    { &hf_gsm_map_ms_selectedLSAIdentity,
      { "selectedLSAIdentity", "gsm_map.ms.selectedLSAIdentity",
        FT_BYTES, BASE_NONE, NULL, 0,
        "LSAIdentity", HFILL }},
    { &hf_gsm_map_ms_accessMode,
      { "accessMode", "gsm_map.ms.accessMode",
        FT_BYTES, BASE_NONE, NULL, 0,
        "OCTET_STRING_SIZE_1", HFILL }},
    { &hf_gsm_map_ms_cmi,
      { "cmi", "gsm_map.ms.cmi",
        FT_BYTES, BASE_NONE, NULL, 0,
        "OCTET_STRING_SIZE_1", HFILL }},
    { &hf_gsm_map_ms_assumedIdle,
      { "assumedIdle", "gsm_map.ms.assumedIdle",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_camelBusy,
      { "camelBusy", "gsm_map.ms.camelBusy",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_netDetNotReachable,
      { "netDetNotReachable", "gsm_map.ms.netDetNotReachable",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_NotReachableReason_vals), 0,
        "NotReachableReason", HFILL }},
    { &hf_gsm_map_ms_notProvidedFromVLR,
      { "notProvidedFromVLR", "gsm_map.ms.notProvidedFromVLR",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_notProvidedFromSGSNorMME,
      { "notProvidedFromSGSNorMME", "gsm_map.ms.notProvidedFromSGSNorMME",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ps_Detached,
      { "ps-Detached", "gsm_map.ms.ps_Detached",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ps_AttachedNotReachableForPaging,
      { "ps-AttachedNotReachableForPaging", "gsm_map.ms.ps_AttachedNotReachableForPaging",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ps_AttachedReachableForPaging,
      { "ps-AttachedReachableForPaging", "gsm_map.ms.ps_AttachedReachableForPaging",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ps_PDP_ActiveNotReachableForPaging,
      { "ps-PDP-ActiveNotReachableForPaging", "gsm_map.ms.ps_PDP_ActiveNotReachableForPaging",
        FT_UINT32, BASE_DEC, NULL, 0,
        "PDP_ContextInfoList", HFILL }},
    { &hf_gsm_map_ms_ps_PDP_ActiveReachableForPaging,
      { "ps-PDP-ActiveReachableForPaging", "gsm_map.ms.ps_PDP_ActiveReachableForPaging",
        FT_UINT32, BASE_DEC, NULL, 0,
        "PDP_ContextInfoList", HFILL }},
    { &hf_gsm_map_ms_PDP_ContextInfoList_item,
      { "PDP-ContextInfo", "gsm_map.ms.PDP_ContextInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_pdp_ContextIdentifier,
      { "pdp-ContextIdentifier", "gsm_map.ms.pdp_ContextIdentifier",
        FT_UINT32, BASE_DEC, NULL, 0,
        "ContextId", HFILL }},
    { &hf_gsm_map_ms_pdp_ContextActive,
      { "pdp-ContextActive", "gsm_map.ms.pdp_ContextActive",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_apn_Subscribed,
      { "apn-Subscribed", "gsm_map.ms.apn_Subscribed",
        FT_BYTES, BASE_NONE, NULL, 0,
        "APN", HFILL }},
    { &hf_gsm_map_ms_apn_InUse,
      { "apn-InUse", "gsm_map.ms.apn_InUse",
        FT_BYTES, BASE_NONE, NULL, 0,
        "APN", HFILL }},
    { &hf_gsm_map_ms_nsapi,
      { "nsapi", "gsm_map.ms.nsapi",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_transactionId,
      { "transactionId", "gsm_map.ms.transactionId",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_teid_ForGnAndGp,
      { "teid-ForGnAndGp", "gsm_map.ms.teid_ForGnAndGp",
        FT_BYTES, BASE_NONE, NULL, 0,
        "TEID", HFILL }},
    { &hf_gsm_map_ms_teid_ForIu,
      { "teid-ForIu", "gsm_map.ms.teid_ForIu",
        FT_BYTES, BASE_NONE, NULL, 0,
        "TEID", HFILL }},
    { &hf_gsm_map_ms_qos_Subscribed_01,
      { "qos-Subscribed", "gsm_map.ms.qos_Subscribed",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Ext_QoS_Subscribed", HFILL }},
    { &hf_gsm_map_ms_qos_Requested,
      { "qos-Requested", "gsm_map.ms.qos_Requested",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Ext_QoS_Subscribed", HFILL }},
    { &hf_gsm_map_ms_qos_Negotiated,
      { "qos-Negotiated", "gsm_map.ms.qos_Negotiated",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Ext_QoS_Subscribed", HFILL }},
    { &hf_gsm_map_ms_chargingId,
      { "chargingId", "gsm_map.ms.chargingId",
        FT_BYTES, BASE_NONE, NULL, 0,
        "GPRSChargingID", HFILL }},
    { &hf_gsm_map_ms_rnc_Address,
      { "rnc-Address", "gsm_map.ms.rnc_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "GSN_Address", HFILL }},
    { &hf_gsm_map_ms_qos2_Subscribed,
      { "qos2-Subscribed", "gsm_map.ms.qos2_Subscribed",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Ext2_QoS_Subscribed", HFILL }},
    { &hf_gsm_map_ms_qos2_Requested,
      { "qos2-Requested", "gsm_map.ms.qos2_Requested",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Ext2_QoS_Subscribed", HFILL }},
    { &hf_gsm_map_ms_qos2_Negotiated,
      { "qos2-Negotiated", "gsm_map.ms.qos2_Negotiated",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Ext2_QoS_Subscribed", HFILL }},
    { &hf_gsm_map_ms_qos3_Subscribed,
      { "qos3-Subscribed", "gsm_map.ms.qos3_Subscribed",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Ext3_QoS_Subscribed", HFILL }},
    { &hf_gsm_map_ms_qos3_Requested,
      { "qos3-Requested", "gsm_map.ms.qos3_Requested",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Ext3_QoS_Subscribed", HFILL }},
    { &hf_gsm_map_ms_qos3_Negotiated,
      { "qos3-Negotiated", "gsm_map.ms.qos3_Negotiated",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Ext3_QoS_Subscribed", HFILL }},
    { &hf_gsm_map_ms_qos4_Subscribed,
      { "qos4-Subscribed", "gsm_map.ms.qos4_Subscribed",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Ext4_QoS_Subscribed", HFILL }},
    { &hf_gsm_map_ms_qos4_Requested,
      { "qos4-Requested", "gsm_map.ms.qos4_Requested",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Ext4_QoS_Subscribed", HFILL }},
    { &hf_gsm_map_ms_qos4_Negotiated,
      { "qos4-Negotiated", "gsm_map.ms.qos4_Negotiated",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Ext4_QoS_Subscribed", HFILL }},
    { &hf_gsm_map_ms_subscriberIdentity,
      { "subscriberIdentity", "gsm_map.ms.subscriberIdentity",
        FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberIdentity_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_requestedSubscriptionInfo,
      { "requestedSubscriptionInfo", "gsm_map.ms.requestedSubscriptionInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_callForwardingData,
      { "callForwardingData", "gsm_map.ms.callForwardingData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_callBarringData,
      { "callBarringData", "gsm_map.ms.callBarringData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_odb_Info,
      { "odb-Info", "gsm_map.ms.odb_Info",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_camel_SubscriptionInfo,
      { "camel-SubscriptionInfo", "gsm_map.ms.camel_SubscriptionInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_supportedVLR_CAMEL_Phases,
      { "supportedVLR-CAMEL-Phases", "gsm_map.ms.supportedVLR_CAMEL_Phases",
        FT_BYTES, BASE_NONE, NULL, 0,
        "SupportedCamelPhases", HFILL }},
    { &hf_gsm_map_ms_supportedSGSN_CAMEL_Phases,
      { "supportedSGSN-CAMEL-Phases", "gsm_map.ms.supportedSGSN_CAMEL_Phases",
        FT_BYTES, BASE_NONE, NULL, 0,
        "SupportedCamelPhases", HFILL }},
    { &hf_gsm_map_ms_offeredCamel4CSIsInVLR,
      { "offeredCamel4CSIsInVLR", "gsm_map.ms.offeredCamel4CSIsInVLR",
        FT_BYTES, BASE_NONE, NULL, 0,
        "OfferedCamel4CSIs", HFILL }},
    { &hf_gsm_map_ms_offeredCamel4CSIsInSGSN,
      { "offeredCamel4CSIsInSGSN", "gsm_map.ms.offeredCamel4CSIsInSGSN",
        FT_BYTES, BASE_NONE, NULL, 0,
        "OfferedCamel4CSIs", HFILL }},
    { &hf_gsm_map_ms_msisdn_BS_List,
      { "msisdn-BS-List", "gsm_map.ms.msisdn_BS_List",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_csg_SubscriptionDataList,
      { "csg-SubscriptionDataList", "gsm_map.ms.csg_SubscriptionDataList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_requestedSS_Info,
      { "requestedSS-Info", "gsm_map.ms.requestedSS_Info",
        FT_NONE, BASE_NONE, NULL, 0,
        "SS_ForBS_Code", HFILL }},
    { &hf_gsm_map_ms_odb,
      { "odb", "gsm_map.ms.odb",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_requestedCAMEL_SubscriptionInfo,
      { "requestedCAMEL-SubscriptionInfo", "gsm_map.ms.requestedCAMEL_SubscriptionInfo",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_RequestedCAMEL_SubscriptionInfo_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_supportedVLR_CAMEL_Phases_01,
      { "supportedVLR-CAMEL-Phases", "gsm_map.ms.supportedVLR_CAMEL_Phases",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_supportedSGSN_CAMEL_Phases_01,
      { "supportedSGSN-CAMEL-Phases", "gsm_map.ms.supportedSGSN_CAMEL_Phases",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_additionalRequestedCAMEL_SubscriptionInfo,
      { "additionalRequestedCAMEL-SubscriptionInfo", "gsm_map.ms.additionalRequestedCAMEL_SubscriptionInfo",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_AdditionalRequestedCAMEL_SubscriptionInfo_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_msisdn_BS_List_01,
      { "msisdn-BS-List", "gsm_map.ms.msisdn_BS_List",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_csg_SubscriptionDataRequested,
      { "csg-SubscriptionDataRequested", "gsm_map.ms.csg_SubscriptionDataRequested",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_MSISDN_BS_List_item,
      { "MSISDN-BS", "gsm_map.ms.MSISDN_BS",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_password,
      { "password", "gsm_map.ms.password",
        FT_STRING, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_wrongPasswordAttemptsCounter,
      { "wrongPasswordAttemptsCounter", "gsm_map.ms.wrongPasswordAttemptsCounter",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_t_CSI,
      { "t-CSI", "gsm_map.ms.t_CSI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_vt_BCSM_CAMEL_TDP_CriteriaList,
      { "vt-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.ms.vt_BCSM_CAMEL_TDP_CriteriaList",
        FT_UINT32, BASE_DEC, NULL, 0,
        "T_BCSM_CAMEL_TDP_CriteriaList", HFILL }},
    { &hf_gsm_map_ms_tif_CSI_NotificationToCSE,
      { "tif-CSI-NotificationToCSE", "gsm_map.ms.tif_CSI_NotificationToCSE",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_specificCSIDeletedList,
      { "specificCSIDeletedList", "gsm_map.ms.specificCSIDeletedList",
        FT_BYTES, BASE_NONE, NULL, 0,
        "SpecificCSI_Withdraw", HFILL }},
    { &hf_gsm_map_ms_o_IM_CSI,
      { "o-IM-CSI", "gsm_map.ms.o_IM_CSI",
        FT_NONE, BASE_NONE, NULL, 0,
        "O_CSI", HFILL }},
    { &hf_gsm_map_ms_o_IM_BcsmCamelTDP_CriteriaList,
      { "o-IM-BcsmCamelTDP-CriteriaList", "gsm_map.ms.o_IM_BcsmCamelTDP_CriteriaList",
        FT_UINT32, BASE_DEC, NULL, 0,
        "O_BcsmCamelTDPCriteriaList", HFILL }},
    { &hf_gsm_map_ms_d_IM_CSI,
      { "d-IM-CSI", "gsm_map.ms.d_IM_CSI",
        FT_NONE, BASE_NONE, NULL, 0,
        "D_CSI", HFILL }},
    { &hf_gsm_map_ms_vt_IM_CSI,
      { "vt-IM-CSI", "gsm_map.ms.vt_IM_CSI",
        FT_NONE, BASE_NONE, NULL, 0,
        "T_CSI", HFILL }},
    { &hf_gsm_map_ms_vt_IM_BCSM_CAMEL_TDP_CriteriaList,
      { "vt-IM-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.ms.vt_IM_BCSM_CAMEL_TDP_CriteriaList",
        FT_UINT32, BASE_DEC, NULL, 0,
        "T_BCSM_CAMEL_TDP_CriteriaList", HFILL }},
    { &hf_gsm_map_ms_modificationRequestFor_CF_Info,
      { "modificationRequestFor-CF-Info", "gsm_map.ms.modificationRequestFor_CF_Info",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_modificationRequestFor_CB_Info,
      { "modificationRequestFor-CB-Info", "gsm_map.ms.modificationRequestFor_CB_Info",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_modificationRequestFor_CSI,
      { "modificationRequestFor-CSI", "gsm_map.ms.modificationRequestFor_CSI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_modificationRequestFor_ODB_data,
      { "modificationRequestFor-ODB-data", "gsm_map.ms.modificationRequestFor_ODB_data",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_modificationRequestFor_IP_SM_GW_Data,
      { "modificationRequestFor-IP-SM-GW-Data", "gsm_map.ms.modificationRequestFor_IP_SM_GW_Data",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_activationRequestForUE_reachability,
      { "activationRequestForUE-reachability", "gsm_map.ms.activationRequestForUE_reachability",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ServingNode", HFILL }},
    { &hf_gsm_map_ms_modificationRequestFor_CSG,
      { "modificationRequestFor-CSG", "gsm_map.ms.modificationRequestFor_CSG",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_modifyNotificationToCSE,
      { "modifyNotificationToCSE", "gsm_map.ms.modifyNotificationToCSE",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_ModificationInstruction_vals), 0,
        "ModificationInstruction", HFILL }},
    { &hf_gsm_map_ms_ss_InfoFor_CSE,
      { "ss-InfoFor-CSE", "gsm_map.ms.ss_InfoFor_CSE",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_Ext_SS_InfoFor_CSE_vals), 0,
        "Ext_SS_InfoFor_CSE", HFILL }},
    { &hf_gsm_map_ms_forwardedToNumber_01,
      { "forwardedToNumber", "gsm_map.ms.forwardedToNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AddressString", HFILL }},
    { &hf_gsm_map_ms_odb_data,
      { "odb-data", "gsm_map.ms.odb_data",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_requestedCamel_SubscriptionInfo,
      { "requestedCamel-SubscriptionInfo", "gsm_map.ms.requestedCamel_SubscriptionInfo",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_RequestedCAMEL_SubscriptionInfo_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_modifyCSI_State,
      { "modifyCSI-State", "gsm_map.ms.modifyCSI_State",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_ModificationInstruction_vals), 0,
        "ModificationInstruction", HFILL }},
    { &hf_gsm_map_ms_modifyRegistrationStatus,
      { "modifyRegistrationStatus", "gsm_map.ms.modifyRegistrationStatus",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_ModificationInstruction_vals), 0,
        "ModificationInstruction", HFILL }},
    { &hf_gsm_map_ms_forwardingInfoFor_CSE,
      { "forwardingInfoFor-CSE", "gsm_map.ms.forwardingInfoFor_CSE",
        FT_NONE, BASE_NONE, NULL, 0,
        "Ext_ForwardingInfoFor_CSE", HFILL }},
    { &hf_gsm_map_ms_callBarringInfoFor_CSE,
      { "callBarringInfoFor-CSE", "gsm_map.ms.callBarringInfoFor_CSE",
        FT_NONE, BASE_NONE, NULL, 0,
        "Ext_CallBarringInfoFor_CSE", HFILL }},
    { &hf_gsm_map_ms_allInformationSent,
      { "allInformationSent", "gsm_map.ms.allInformationSent",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ue_reachable,
      { "ue-reachable", "gsm_map.ms.ue_reachable",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ServingNode", HFILL }},
    { &hf_gsm_map_ms_eventMet,
      { "eventMet", "gsm_map.ms.eventMet",
        FT_BYTES, BASE_NONE, NULL, 0,
        "MM_Code", HFILL }},
    { &hf_gsm_map_ms_supportedCAMELPhases,
      { "supportedCAMELPhases", "gsm_map.ms.supportedCAMELPhases",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_offeredCamel4Functionalities,
      { "offeredCamel4Functionalities", "gsm_map.ms.offeredCamel4Functionalities",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_naea_PreferredCI,
      { "naea-PreferredCI", "gsm_map.ms.naea_PreferredCI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_gprsSubscriptionData,
      { "gprsSubscriptionData", "gsm_map.ms.gprsSubscriptionData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_roamingRestrictedInSgsnDueToUnsupportedFeature,
      { "roamingRestrictedInSgsnDueToUnsupportedFeature", "gsm_map.ms.roamingRestrictedInSgsnDueToUnsupportedFeature",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_networkAccessMode,
      { "networkAccessMode", "gsm_map.ms.networkAccessMode",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_NetworkAccessMode_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_lsaInformation,
      { "lsaInformation", "gsm_map.ms.lsaInformation",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_lmu_Indicator,
      { "lmu-Indicator", "gsm_map.ms.lmu_Indicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_lcsInformation,
      { "lcsInformation", "gsm_map.ms.lcsInformation",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_istAlertTimer,
      { "istAlertTimer", "gsm_map.ms.istAlertTimer",
        FT_UINT32, BASE_DEC, NULL, 0,
        "IST_AlertTimerValue", HFILL }},
    { &hf_gsm_map_ms_superChargerSupportedInHLR,
      { "superChargerSupportedInHLR", "gsm_map.ms.superChargerSupportedInHLR",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AgeIndicator", HFILL }},
    { &hf_gsm_map_ms_mc_SS_Info,
      { "mc-SS-Info", "gsm_map.ms.mc_SS_Info",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_cs_AllocationRetentionPriority,
      { "cs-AllocationRetentionPriority", "gsm_map.ms.cs_AllocationRetentionPriority",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_sgsn_CAMEL_SubscriptionInfo,
      { "sgsn-CAMEL-SubscriptionInfo", "gsm_map.ms.sgsn_CAMEL_SubscriptionInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_accessRestrictionData,
      { "accessRestrictionData", "gsm_map.ms.accessRestrictionData",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ics_Indicator,
      { "ics-Indicator", "gsm_map.ms.ics_Indicator",
        FT_BOOLEAN, BASE_NONE, NULL, 0,
        "BOOLEAN", HFILL }},
    { &hf_gsm_map_ms_eps_SubscriptionData,
      { "eps-SubscriptionData", "gsm_map.ms.eps_SubscriptionData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ue_ReachabilityRequestIndicator,
      { "ue-ReachabilityRequestIndicator", "gsm_map.ms.ue_ReachabilityRequestIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ms_mme_Name,
      { "mme-Name", "gsm_map.ms.mme_Name",
        FT_BYTES, BASE_NONE, NULL, 0,
        "DiameterIdentity", HFILL }},
    { &hf_gsm_map_ms_SupportedRAT_Types_utran,
      { "utran", "gsm_map.ms.utran",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedRAT_Types_geran,
      { "geran", "gsm_map.ms.geran",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedRAT_Types_gan,
      { "gan", "gsm_map.ms.gan",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedRAT_Types_i_hspa_evolution,
      { "i-hspa-evolution", "gsm_map.ms.i-hspa-evolution",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedRAT_Types_e_utran,
      { "e-utran", "gsm_map.ms.e-utran",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet1,
      { "lcsCapabilitySet1", "gsm_map.ms.lcsCapabilitySet1",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet2,
      { "lcsCapabilitySet2", "gsm_map.ms.lcsCapabilitySet2",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet3,
      { "lcsCapabilitySet3", "gsm_map.ms.lcsCapabilitySet3",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet4,
      { "lcsCapabilitySet4", "gsm_map.ms.lcsCapabilitySet4",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedLCS_CapabilitySets_lcsCapabilitySet5,
      { "lcsCapabilitySet5", "gsm_map.ms.lcsCapabilitySet5",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ISR_Information_updateMME,
      { "updateMME", "gsm_map.ms.updateMME",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ISR_Information_cancelSGSN,
      { "cancelSGSN", "gsm_map.ms.cancelSGSN",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ISR_Information_initialAttachIndicator,
      { "initialAttachIndicator", "gsm_map.ms.initialAttachIndicator",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_odb_all_apn,
      { "odb-all-apn", "gsm_map.ms.odb-all-apn",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_odb_HPLMN_APN,
      { "odb-HPLMN-APN", "gsm_map.ms.odb-HPLMN-APN",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_odb_VPLMN_APN,
      { "odb-VPLMN-APN", "gsm_map.ms.odb-VPLMN-APN",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_odb_all_og,
      { "odb-all-og", "gsm_map.ms.odb-all-og",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_odb_all_international_og,
      { "odb-all-international-og", "gsm_map.ms.odb-all-international-og",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_odb_all_int_og_not_to_HPLMN_country,
      { "odb-all-int-og-not-to-HPLMN-country", "gsm_map.ms.odb-all-int-og-not-to-HPLMN-country",
        FT_BOOLEAN, 8, NULL, 0x04,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_odb_all_interzonal_og,
      { "odb-all-interzonal-og", "gsm_map.ms.odb-all-interzonal-og",
        FT_BOOLEAN, 8, NULL, 0x02,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_odb_all_interzonal_og_not_to_HPLMN_country,
      { "odb-all-interzonal-og-not-to-HPLMN-country", "gsm_map.ms.odb-all-interzonal-og-not-to-HPLMN-country",
        FT_BOOLEAN, 8, NULL, 0x01,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_odb_all_interzonal_og_and_internat_og_not_to_HPLMN_country,
      { "odb-all-interzonal-og-and-internat-og-not-to-HPLMN-country", "gsm_map.ms.odb-all-interzonal-og-and-internat-og-not-to-HPLMN-country",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_regSub,
      { "regSub", "gsm_map.ms.regSub",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_trace,
      { "trace", "gsm_map.ms.trace",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_lcs_all_PrivExcep,
      { "lcs-all-PrivExcep", "gsm_map.ms.lcs-all-PrivExcep",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_lcs_universal,
      { "lcs-universal", "gsm_map.ms.lcs-universal",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_lcs_CallSessionRelated,
      { "lcs-CallSessionRelated", "gsm_map.ms.lcs-CallSessionRelated",
        FT_BOOLEAN, 8, NULL, 0x04,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_lcs_CallSessionUnrelated,
      { "lcs-CallSessionUnrelated", "gsm_map.ms.lcs-CallSessionUnrelated",
        FT_BOOLEAN, 8, NULL, 0x02,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_lcs_PLMN_operator,
      { "lcs-PLMN-operator", "gsm_map.ms.lcs-PLMN-operator",
        FT_BOOLEAN, 8, NULL, 0x01,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_lcs_ServiceType,
      { "lcs-ServiceType", "gsm_map.ms.lcs-ServiceType",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_lcs_all_MOLR_SS,
      { "lcs-all-MOLR-SS", "gsm_map.ms.lcs-all-MOLR-SS",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_lcs_basicSelfLocation,
      { "lcs-basicSelfLocation", "gsm_map.ms.lcs-basicSelfLocation",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_lcs_autonomousSelfLocation,
      { "lcs-autonomousSelfLocation", "gsm_map.ms.lcs-autonomousSelfLocation",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_lcs_transferToThirdParty,
      { "lcs-transferToThirdParty", "gsm_map.ms.lcs-transferToThirdParty",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_sm_mo_pp,
      { "sm-mo-pp", "gsm_map.ms.sm-mo-pp",
        FT_BOOLEAN, 8, NULL, 0x04,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_barring_OutgoingCalls,
      { "barring-OutgoingCalls", "gsm_map.ms.barring-OutgoingCalls",
        FT_BOOLEAN, 8, NULL, 0x02,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_baoc,
      { "baoc", "gsm_map.ms.baoc",
        FT_BOOLEAN, 8, NULL, 0x01,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_boic,
      { "boic", "gsm_map.ms.boic",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedFeatures_boicExHC,
      { "boicExHC", "gsm_map.ms.boicExHC",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_RequestedEquipmentInfo_equipmentStatus,
      { "equipmentStatus", "gsm_map.ms.equipmentStatus",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_RequestedEquipmentInfo_bmuef,
      { "bmuef", "gsm_map.ms.bmuef",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_AccessRestrictionData_utranNotAllowed,
      { "utranNotAllowed", "gsm_map.ms.utranNotAllowed",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_AccessRestrictionData_geranNotAllowed,
      { "geranNotAllowed", "gsm_map.ms.geranNotAllowed",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_AccessRestrictionData_ganNotAllowed,
      { "ganNotAllowed", "gsm_map.ms.ganNotAllowed",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_AccessRestrictionData_i_hspa_evolutionNotAllowed,
      { "i-hspa-evolutionNotAllowed", "gsm_map.ms.i-hspa-evolutionNotAllowed",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_ms_AccessRestrictionData_e_utranNotAllowed,
      { "e-utranNotAllowed", "gsm_map.ms.e-utranNotAllowed",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_ms_AccessRestrictionData_ho_toNon3GPP_AccessNotAllowed,
      { "ho-toNon3GPP-AccessNotAllowed", "gsm_map.ms.ho-toNon3GPP-AccessNotAllowed",
        FT_BOOLEAN, 8, NULL, 0x04,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_allOG_CallsBarred,
      { "allOG-CallsBarred", "gsm_map.ms.allOG-CallsBarred",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_internationalOGCallsBarred,
      { "internationalOGCallsBarred", "gsm_map.ms.internationalOGCallsBarred",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_internationalOGCallsNotToHPLMN_CountryBarred,
      { "internationalOGCallsNotToHPLMN-CountryBarred", "gsm_map.ms.internationalOGCallsNotToHPLMN-CountryBarred",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_interzonalOGCallsBarred,
      { "interzonalOGCallsBarred", "gsm_map.ms.interzonalOGCallsBarred",
        FT_BOOLEAN, 8, NULL, 0x02,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_interzonalOGCallsNotToHPLMN_CountryBarred,
      { "interzonalOGCallsNotToHPLMN-CountryBarred", "gsm_map.ms.interzonalOGCallsNotToHPLMN-CountryBarred",
        FT_BOOLEAN, 8, NULL, 0x01,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_interzonalOGCallsAndInternationalOGCallsNotToHPLMN_CountryBarred,
      { "interzonalOGCallsAndInternationalOGCallsNotToHPLMN-CountryBarred", "gsm_map.ms.interzonalOGCallsAndInternationalOGCallsNotToHPLMN-CountryBarred",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_premiumRateInformationOGCallsBarred,
      { "premiumRateInformationOGCallsBarred", "gsm_map.ms.premiumRateInformationOGCallsBarred",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_premiumRateEntertainementOGCallsBarred,
      { "premiumRateEntertainementOGCallsBarred", "gsm_map.ms.premiumRateEntertainementOGCallsBarred",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_ss_AccessBarred,
      { "ss-AccessBarred", "gsm_map.ms.ss-AccessBarred",
        FT_BOOLEAN, 8, NULL, 0x04,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_allECT_Barred,
      { "allECT-Barred", "gsm_map.ms.allECT-Barred",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_chargeableECT_Barred,
      { "chargeableECT-Barred", "gsm_map.ms.chargeableECT-Barred",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_internationalECT_Barred,
      { "internationalECT-Barred", "gsm_map.ms.internationalECT-Barred",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_interzonalECT_Barred,
      { "interzonalECT-Barred", "gsm_map.ms.interzonalECT-Barred",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_doublyChargeableECT_Barred,
      { "doublyChargeableECT-Barred", "gsm_map.ms.doublyChargeableECT-Barred",
        FT_BOOLEAN, 8, NULL, 0x04,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_multipleECT_Barred,
      { "multipleECT-Barred", "gsm_map.ms.multipleECT-Barred",
        FT_BOOLEAN, 8, NULL, 0x02,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_allPacketOrientedServicesBarred,
      { "allPacketOrientedServicesBarred", "gsm_map.ms.allPacketOrientedServicesBarred",
        FT_BOOLEAN, 8, NULL, 0x01,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_roamerAccessToHPLMN_AP_Barred,
      { "roamerAccessToHPLMN-AP-Barred", "gsm_map.ms.roamerAccessToHPLMN-AP-Barred",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_roamerAccessToVPLMN_AP_Barred,
      { "roamerAccessToVPLMN-AP-Barred", "gsm_map.ms.roamerAccessToVPLMN-AP-Barred",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMNOG_CallsBarred,
      { "roamingOutsidePLMNOG-CallsBarred", "gsm_map.ms.roamingOutsidePLMNOG-CallsBarred",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_allIC_CallsBarred,
      { "allIC-CallsBarred", "gsm_map.ms.allIC-CallsBarred",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMNIC_CallsBarred,
      { "roamingOutsidePLMNIC-CallsBarred", "gsm_map.ms.roamingOutsidePLMNIC-CallsBarred",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMNICountryIC_CallsBarred,
      { "roamingOutsidePLMNICountryIC-CallsBarred", "gsm_map.ms.roamingOutsidePLMNICountryIC-CallsBarred",
        FT_BOOLEAN, 8, NULL, 0x04,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMN_Barred,
      { "roamingOutsidePLMN-Barred", "gsm_map.ms.roamingOutsidePLMN-Barred",
        FT_BOOLEAN, 8, NULL, 0x02,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_roamingOutsidePLMN_CountryBarred,
      { "roamingOutsidePLMN-CountryBarred", "gsm_map.ms.roamingOutsidePLMN-CountryBarred",
        FT_BOOLEAN, 8, NULL, 0x01,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_registrationAllCF_Barred,
      { "registrationAllCF-Barred", "gsm_map.ms.registrationAllCF-Barred",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_registrationCFNotToHPLMN_Barred,
      { "registrationCFNotToHPLMN-Barred", "gsm_map.ms.registrationCFNotToHPLMN-Barred",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_registrationInterzonalCF_Barred,
      { "registrationInterzonalCF-Barred", "gsm_map.ms.registrationInterzonalCF-Barred",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_registrationInterzonalCFNotToHPLMN_Barred,
      { "registrationInterzonalCFNotToHPLMN-Barred", "gsm_map.ms.registrationInterzonalCFNotToHPLMN-Barred",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_GeneralData_registrationInternationalCF_Barred,
      { "registrationInternationalCF-Barred", "gsm_map.ms.registrationInternationalCF-Barred",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType1,
      { "plmn-SpecificBarringType1", "gsm_map.ms.plmn-SpecificBarringType1",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType2,
      { "plmn-SpecificBarringType2", "gsm_map.ms.plmn-SpecificBarringType2",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType3,
      { "plmn-SpecificBarringType3", "gsm_map.ms.plmn-SpecificBarringType3",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ODB_HPLMN_Data_plmn_SpecificBarringType4,
      { "plmn-SpecificBarringType4", "gsm_map.ms.plmn-SpecificBarringType4",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SpecificCSI_Withdraw_o_csi,
      { "o-csi", "gsm_map.ms.o-csi",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SpecificCSI_Withdraw_ss_csi,
      { "ss-csi", "gsm_map.ms.ss-csi",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SpecificCSI_Withdraw_tif_csi,
      { "tif-csi", "gsm_map.ms.tif-csi",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SpecificCSI_Withdraw_d_csi,
      { "d-csi", "gsm_map.ms.d-csi",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SpecificCSI_Withdraw_vt_csi,
      { "vt-csi", "gsm_map.ms.vt-csi",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SpecificCSI_Withdraw_mo_sms_csi,
      { "mo-sms-csi", "gsm_map.ms.mo-sms-csi",
        FT_BOOLEAN, 8, NULL, 0x04,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SpecificCSI_Withdraw_m_csi,
      { "m-csi", "gsm_map.ms.m-csi",
        FT_BOOLEAN, 8, NULL, 0x02,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SpecificCSI_Withdraw_gprs_csi,
      { "gprs-csi", "gsm_map.ms.gprs-csi",
        FT_BOOLEAN, 8, NULL, 0x01,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SpecificCSI_Withdraw_t_csi,
      { "t-csi", "gsm_map.ms.t-csi",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SpecificCSI_Withdraw_mt_sms_csi,
      { "mt-sms-csi", "gsm_map.ms.mt-sms-csi",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SpecificCSI_Withdraw_mg_csi,
      { "mg-csi", "gsm_map.ms.mg-csi",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SpecificCSI_Withdraw_o_IM_CSI,
      { "o-IM-CSI", "gsm_map.ms.o-IM-CSI",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SpecificCSI_Withdraw_d_IM_CSI,
      { "d-IM-CSI", "gsm_map.ms.d-IM-CSI",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SpecificCSI_Withdraw_vt_IM_CSI,
      { "vt-IM-CSI", "gsm_map.ms.vt-IM-CSI",
        FT_BOOLEAN, 8, NULL, 0x04,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedCamelPhases_phase1,
      { "phase1", "gsm_map.ms.phase1",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedCamelPhases_phase2,
      { "phase2", "gsm_map.ms.phase2",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedCamelPhases_phase3,
      { "phase3", "gsm_map.ms.phase3",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_SupportedCamelPhases_phase4,
      { "phase4", "gsm_map.ms.phase4",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4CSIs_o_csi,
      { "o-csi", "gsm_map.ms.o-csi",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4CSIs_d_csi,
      { "d-csi", "gsm_map.ms.d-csi",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4CSIs_vt_csi,
      { "vt-csi", "gsm_map.ms.vt-csi",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4CSIs_t_csi,
      { "t-csi", "gsm_map.ms.t-csi",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4CSIs_mt_sms_csi,
      { "mt-sms-csi", "gsm_map.ms.mt-sms-csi",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4CSIs_mg_csi,
      { "mg-csi", "gsm_map.ms.mg-csi",
        FT_BOOLEAN, 8, NULL, 0x04,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4CSIs_psi_enhancements,
      { "psi-enhancements", "gsm_map.ms.psi-enhancements",
        FT_BOOLEAN, 8, NULL, 0x02,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_initiateCallAttempt,
      { "initiateCallAttempt", "gsm_map.ms.initiateCallAttempt",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_splitLeg,
      { "splitLeg", "gsm_map.ms.splitLeg",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_moveLeg,
      { "moveLeg", "gsm_map.ms.moveLeg",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_disconnectLeg,
      { "disconnectLeg", "gsm_map.ms.disconnectLeg",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_entityReleased,
      { "entityReleased", "gsm_map.ms.entityReleased",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_dfc_WithArgument,
      { "dfc-WithArgument", "gsm_map.ms.dfc-WithArgument",
        FT_BOOLEAN, 8, NULL, 0x04,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_playTone,
      { "playTone", "gsm_map.ms.playTone",
        FT_BOOLEAN, 8, NULL, 0x02,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_dtmf_MidCall,
      { "dtmf-MidCall", "gsm_map.ms.dtmf-MidCall",
        FT_BOOLEAN, 8, NULL, 0x01,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_chargingIndicator,
      { "chargingIndicator", "gsm_map.ms.chargingIndicator",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_alertingDP,
      { "alertingDP", "gsm_map.ms.alertingDP",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_locationAtAlerting,
      { "locationAtAlerting", "gsm_map.ms.locationAtAlerting",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_changeOfPositionDP,
      { "changeOfPositionDP", "gsm_map.ms.changeOfPositionDP",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_or_Interactions,
      { "or-Interactions", "gsm_map.ms.or-Interactions",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_warningToneEnhancements,
      { "warningToneEnhancements", "gsm_map.ms.warningToneEnhancements",
        FT_BOOLEAN, 8, NULL, 0x04,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_cf_Enhancements,
      { "cf-Enhancements", "gsm_map.ms.cf-Enhancements",
        FT_BOOLEAN, 8, NULL, 0x02,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_subscribedEnhancedDialledServices,
      { "subscribedEnhancedDialledServices", "gsm_map.ms.subscribedEnhancedDialledServices",
        FT_BOOLEAN, 8, NULL, 0x01,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_servingNetworkEnhancedDialledServices,
      { "servingNetworkEnhancedDialledServices", "gsm_map.ms.servingNetworkEnhancedDialledServices",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_criteriaForChangeOfPositionDP,
      { "criteriaForChangeOfPositionDP", "gsm_map.ms.criteriaForChangeOfPositionDP",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_serviceChangeDP,
      { "serviceChangeDP", "gsm_map.ms.serviceChangeDP",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_OfferedCamel4Functionalities_collectInformation,
      { "collectInformation", "gsm_map.ms.collectInformation",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_ms_AdditionalSubscriptions_privilegedUplinkRequest,
      { "privilegedUplinkRequest", "gsm_map.ms.privilegedUplinkRequest",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_AdditionalSubscriptions_emergencyUplinkRequest,
      { "emergencyUplinkRequest", "gsm_map.ms.emergencyUplinkRequest",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_AdditionalSubscriptions_emergencyReset,
      { "emergencyReset", "gsm_map.ms.emergencyReset",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_ms_RequestedNodes_mme,
      { "mme", "gsm_map.ms.mme",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ms_RequestedNodes_sgsn,
      { "sgsn", "gsm_map.ms.sgsn",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ms_ServingNode_mme,
      { "mme", "gsm_map.ms.mme",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},

/* --- Module MAP-CH-DataTypes --- --- ---                                    */

    { &hf_gsm_map_ch_cug_Interlock,
      { "cug-Interlock", "gsm_map.ch.cug_Interlock",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_cug_OutgoingAccess,
      { "cug-OutgoingAccess", "gsm_map.ch.cug_OutgoingAccess",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_extensionContainer,
      { "extensionContainer", "gsm_map.ch.extensionContainer",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_msisdn,
      { "msisdn", "gsm_map.ch.msisdn",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ch_cug_CheckInfo,
      { "cug-CheckInfo", "gsm_map.ch.cug_CheckInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_numberOfForwarding,
      { "numberOfForwarding", "gsm_map.ch.numberOfForwarding",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_interrogationType,
      { "interrogationType", "gsm_map.ch.interrogationType",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ch_InterrogationType_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_or_Interrogation,
      { "or-Interrogation", "gsm_map.ch.or_Interrogation",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_or_Capability,
      { "or-Capability", "gsm_map.ch.or_Capability",
        FT_UINT32, BASE_DEC, NULL, 0,
        "OR_Phase", HFILL }},
    { &hf_gsm_map_ch_gmsc_OrGsmSCF_Address,
      { "gmsc-OrGsmSCF-Address", "gsm_map.ch.gmsc_OrGsmSCF_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ch_callReferenceNumber,
      { "callReferenceNumber", "gsm_map.ch.callReferenceNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_forwardingReason,
      { "forwardingReason", "gsm_map.ch.forwardingReason",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ch_ForwardingReason_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_basicServiceGroup,
      { "basicServiceGroup", "gsm_map.ch.basicServiceGroup",
        FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
        "Ext_BasicServiceCode", HFILL }},
    { &hf_gsm_map_ch_networkSignalInfo,
      { "networkSignalInfo", "gsm_map.ch.networkSignalInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        "ExternalSignalInfo", HFILL }},
    { &hf_gsm_map_ch_camelInfo,
      { "camelInfo", "gsm_map.ch.camelInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_suppressionOfAnnouncement,
      { "suppressionOfAnnouncement", "gsm_map.ch.suppressionOfAnnouncement",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_alertingPattern,
      { "alertingPattern", "gsm_map.ch.alertingPattern",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_ccbs_Call,
      { "ccbs-Call", "gsm_map.ch.ccbs_Call",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_supportedCCBS_Phase,
      { "supportedCCBS-Phase", "gsm_map.ch.supportedCCBS_Phase",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_additionalSignalInfo,
      { "additionalSignalInfo", "gsm_map.ch.additionalSignalInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        "Ext_ExternalSignalInfo", HFILL }},
    { &hf_gsm_map_ch_istSupportIndicator,
      { "istSupportIndicator", "gsm_map.ch.istSupportIndicator",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_IST_SupportIndicator_vals), 0,
        "IST_SupportIndicator", HFILL }},
    { &hf_gsm_map_ch_pre_pagingSupported,
      { "pre-pagingSupported", "gsm_map.ch.pre_pagingSupported",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_callDiversionTreatmentIndicator,
      { "callDiversionTreatmentIndicator", "gsm_map.ch.callDiversionTreatmentIndicator",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_longFTN_Supported,
      { "longFTN-Supported", "gsm_map.ch.longFTN_Supported",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_suppress_VT_CSI,
      { "suppress-VT-CSI", "gsm_map.ch.suppress_VT_CSI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_suppressIncomingCallBarring,
      { "suppressIncomingCallBarring", "gsm_map.ch.suppressIncomingCallBarring",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_gsmSCF_InitiatedCall,
      { "gsmSCF-InitiatedCall", "gsm_map.ch.gsmSCF_InitiatedCall",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_basicServiceGroup2,
      { "basicServiceGroup2", "gsm_map.ch.basicServiceGroup2",
        FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
        "Ext_BasicServiceCode", HFILL }},
    { &hf_gsm_map_ch_networkSignalInfo2,
      { "networkSignalInfo2", "gsm_map.ch.networkSignalInfo2",
        FT_NONE, BASE_NONE, NULL, 0,
        "ExternalSignalInfo", HFILL }},
    { &hf_gsm_map_ch_suppressMTSS,
      { "suppressMTSS", "gsm_map.ch.suppressMTSS",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_mtRoamingRetrySupported,
      { "mtRoamingRetrySupported", "gsm_map.ch.mtRoamingRetrySupported",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_callPriority,
      { "callPriority", "gsm_map.ch.callPriority",
        FT_UINT32, BASE_DEC, VALS(gsm_map_EMLPP_Priority_vals), 0,
        "EMLPP_Priority", HFILL }},
    { &hf_gsm_map_ch_imsi,
      { "imsi", "gsm_map.ch.imsi",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_extendedRoutingInfo,
      { "extendedRoutingInfo", "gsm_map.ch.extendedRoutingInfo",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ch_ExtendedRoutingInfo_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_cugSubscriptionFlag,
      { "cugSubscriptionFlag", "gsm_map.ch.cugSubscriptionFlag",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_subscriberInfo,
      { "subscriberInfo", "gsm_map.ch.subscriberInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_ss_List,
      { "ss-List", "gsm_map.ch.ss_List",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_basicService,
      { "basicService", "gsm_map.ch.basicService",
        FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
        "Ext_BasicServiceCode", HFILL }},
    { &hf_gsm_map_ch_forwardingInterrogationRequired,
      { "forwardingInterrogationRequired", "gsm_map.ch.forwardingInterrogationRequired",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_vmsc_Address,
      { "vmsc-Address", "gsm_map.ch.vmsc_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ch_naea_PreferredCI,
      { "naea-PreferredCI", "gsm_map.ch.naea_PreferredCI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_ccbs_Indicators,
      { "ccbs-Indicators", "gsm_map.ch.ccbs_Indicators",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_numberPortabilityStatus,
      { "numberPortabilityStatus", "gsm_map.ch.numberPortabilityStatus",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_NumberPortabilityStatus_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_istAlertTimer,
      { "istAlertTimer", "gsm_map.ch.istAlertTimer",
        FT_UINT32, BASE_DEC, NULL, 0,
        "IST_AlertTimerValue", HFILL }},
    { &hf_gsm_map_ch_supportedCamelPhasesInVMSC,
      { "supportedCamelPhasesInVMSC", "gsm_map.ch.supportedCamelPhasesInVMSC",
        FT_BYTES, BASE_NONE, NULL, 0,
        "SupportedCamelPhases", HFILL }},
    { &hf_gsm_map_ch_offeredCamel4CSIsInVMSC,
      { "offeredCamel4CSIsInVMSC", "gsm_map.ch.offeredCamel4CSIsInVMSC",
        FT_BYTES, BASE_NONE, NULL, 0,
        "OfferedCamel4CSIs", HFILL }},
    { &hf_gsm_map_ch_routingInfo2,
      { "routingInfo2", "gsm_map.ch.routingInfo2",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ch_RoutingInfo_vals), 0,
        "RoutingInfo", HFILL }},
    { &hf_gsm_map_ch_ss_List2,
      { "ss-List2", "gsm_map.ch.ss_List2",
        FT_UINT32, BASE_DEC, NULL, 0,
        "SS_List", HFILL }},
    { &hf_gsm_map_ch_basicService2,
      { "basicService2", "gsm_map.ch.basicService2",
        FT_UINT32, BASE_DEC, VALS(gsm_map_Ext_BasicServiceCode_vals), 0,
        "Ext_BasicServiceCode", HFILL }},
    { &hf_gsm_map_ch_allowedServices,
      { "allowedServices", "gsm_map.ch.allowedServices",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_unavailabilityCause,
      { "unavailabilityCause", "gsm_map.ch.unavailabilityCause",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ch_UnavailabilityCause_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_releaseResourcesSupported,
      { "releaseResourcesSupported", "gsm_map.ch.releaseResourcesSupported",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_gsm_BearerCapability,
      { "gsm-BearerCapability", "gsm_map.ch.gsm_BearerCapability",
        FT_NONE, BASE_NONE, NULL, 0,
        "ExternalSignalInfo", HFILL }},
    { &hf_gsm_map_ch_ccbs_Possible,
      { "ccbs-Possible", "gsm_map.ch.ccbs_Possible",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_keepCCBS_CallIndicator,
      { "keepCCBS-CallIndicator", "gsm_map.ch.keepCCBS_CallIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_roamingNumber,
      { "roamingNumber", "gsm_map.ch.roamingNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ch_forwardingData,
      { "forwardingData", "gsm_map.ch.forwardingData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_forwardedToNumber,
      { "forwardedToNumber", "gsm_map.ch.forwardedToNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ch_forwardedToSubaddress,
      { "forwardedToSubaddress", "gsm_map.ch.forwardedToSubaddress",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_SubaddressString", HFILL }},
    { &hf_gsm_map_ch_forwardingOptions,
      { "forwardingOptions", "gsm_map.ch.forwardingOptions",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_longForwardedToNumber,
      { "longForwardedToNumber", "gsm_map.ch.longForwardedToNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "FTN_AddressString", HFILL }},
    { &hf_gsm_map_ch_msc_Number,
      { "msc-Number", "gsm_map.ch.msc_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ch_lmsi,
      { "lmsi", "gsm_map.ch.lmsi",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_gmsc_Address,
      { "gmsc-Address", "gsm_map.ch.gmsc_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ch_supportedCamelPhasesInInterrogatingNode,
      { "supportedCamelPhasesInInterrogatingNode", "gsm_map.ch.supportedCamelPhasesInInterrogatingNode",
        FT_BYTES, BASE_NONE, NULL, 0,
        "SupportedCamelPhases", HFILL }},
    { &hf_gsm_map_ch_orNotSupportedInGMSC,
      { "orNotSupportedInGMSC", "gsm_map.ch.orNotSupportedInGMSC",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_offeredCamel4CSIsInInterrogatingNode,
      { "offeredCamel4CSIsInInterrogatingNode", "gsm_map.ch.offeredCamel4CSIsInInterrogatingNode",
        FT_BYTES, BASE_NONE, NULL, 0,
        "OfferedCamel4CSIs", HFILL }},
    { &hf_gsm_map_ch_pagingArea,
      { "pagingArea", "gsm_map.ch.pagingArea",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_o_CSI,
      { "o-CSI", "gsm_map.ch.o_CSI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_uu_Data,
      { "uu-Data", "gsm_map.ch.uu_Data",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_allInformationSent,
      { "allInformationSent", "gsm_map.ch.allInformationSent",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_d_csi,
      { "d-csi", "gsm_map.ch.d_csi",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_o_BcsmCamelTDPCriteriaList,
      { "o-BcsmCamelTDPCriteriaList", "gsm_map.ch.o_BcsmCamelTDPCriteriaList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_mtRoamingRetry,
      { "mtRoamingRetry", "gsm_map.ch.mtRoamingRetry",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_uuIndicator,
      { "uuIndicator", "gsm_map.ch.uuIndicator",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_uui,
      { "uui", "gsm_map.ch.uui",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_uusCFInteraction,
      { "uusCFInteraction", "gsm_map.ch.uusCFInteraction",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_supportedCamelPhases,
      { "supportedCamelPhases", "gsm_map.ch.supportedCamelPhases",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_suppress_T_CSI,
      { "suppress-T-CSI", "gsm_map.ch.suppress_T_CSI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_offeredCamel4CSIs,
      { "offeredCamel4CSIs", "gsm_map.ch.offeredCamel4CSIs",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_routingInfo,
      { "routingInfo", "gsm_map.ch.routingInfo",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ch_RoutingInfo_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_camelRoutingInfo,
      { "camelRoutingInfo", "gsm_map.ch.camelRoutingInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_gmscCamelSubscriptionInfo,
      { "gmscCamelSubscriptionInfo", "gsm_map.ch.gmscCamelSubscriptionInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_t_CSI,
      { "t-CSI", "gsm_map.ch.t_CSI",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_o_BcsmCamelTDP_CriteriaList,
      { "o-BcsmCamelTDP-CriteriaList", "gsm_map.ch.o_BcsmCamelTDP_CriteriaList",
        FT_UINT32, BASE_DEC, NULL, 0,
        "O_BcsmCamelTDPCriteriaList", HFILL }},
    { &hf_gsm_map_ch_t_BCSM_CAMEL_TDP_CriteriaList,
      { "t-BCSM-CAMEL-TDP-CriteriaList", "gsm_map.ch.t_BCSM_CAMEL_TDP_CriteriaList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_ccbs_Monitoring,
      { "ccbs-Monitoring", "gsm_map.ch.ccbs_Monitoring",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ch_ReportingState_vals), 0,
        "ReportingState", HFILL }},
    { &hf_gsm_map_ch_ccbs_SubscriberStatus,
      { "ccbs-SubscriberStatus", "gsm_map.ch.ccbs_SubscriberStatus",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ch_CCBS_SubscriberStatus_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_eventReportData,
      { "eventReportData", "gsm_map.ch.eventReportData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_callReportdata,
      { "callReportdata", "gsm_map.ch.callReportdata",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_monitoringMode,
      { "monitoringMode", "gsm_map.ch.monitoringMode",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ch_MonitoringMode_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_callOutcome,
      { "callOutcome", "gsm_map.ch.callOutcome",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ch_CallOutcome_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_callInfo,
      { "callInfo", "gsm_map.ch.callInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        "ExternalSignalInfo", HFILL }},
    { &hf_gsm_map_ch_ccbs_Feature,
      { "ccbs-Feature", "gsm_map.ch.ccbs_Feature",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_translatedB_Number,
      { "translatedB-Number", "gsm_map.ch.translatedB_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ch_replaceB_Number,
      { "replaceB-Number", "gsm_map.ch.replaceB_Number",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_ruf_Outcome,
      { "ruf-Outcome", "gsm_map.ch.ruf_Outcome",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ch_RUF_Outcome_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_istInformationWithdraw,
      { "istInformationWithdraw", "gsm_map.ch.istInformationWithdraw",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_callTerminationIndicator,
      { "callTerminationIndicator", "gsm_map.ch.callTerminationIndicator",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ch_CallTerminationIndicator_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_ch_msrn,
      { "msrn", "gsm_map.ch.msrn",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_ch_SuppressMTSS_suppressCUG,
      { "suppressCUG", "gsm_map.ch.suppressCUG",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ch_SuppressMTSS_suppressCCBS,
      { "suppressCCBS", "gsm_map.ch.suppressCCBS",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_ch_AllowedServices_firstServiceAllowed,
      { "firstServiceAllowed", "gsm_map.ch.firstServiceAllowed",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_ch_AllowedServices_secondServiceAllowed,
      { "secondServiceAllowed", "gsm_map.ch.secondServiceAllowed",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},

/* --- Module MAP-LCS-DataTypes --- --- ---                                   */

    { &hf_gsm_map_lcs_gsm_map_lcs_LCS_ClientID_PDU,
      { "LCS-ClientID", "gsm_map.lcs.LCS_ClientID",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_mlcNumber,
      { "mlcNumber", "gsm_map.lcs.mlcNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_lcs_targetMS,
      { "targetMS", "gsm_map.lcs.targetMS",
        FT_UINT32, BASE_DEC, VALS(gsm_map_SubscriberIdentity_vals), 0,
        "SubscriberIdentity", HFILL }},
    { &hf_gsm_map_lcs_extensionContainer,
      { "extensionContainer", "gsm_map.lcs.extensionContainer",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_lcsLocationInfo,
      { "lcsLocationInfo", "gsm_map.lcs.lcsLocationInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_v_gmlc_Address,
      { "v-gmlc-Address", "gsm_map.lcs.v_gmlc_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "GSN_Address", HFILL }},
    { &hf_gsm_map_lcs_h_gmlc_Address,
      { "h-gmlc-Address", "gsm_map.lcs.h_gmlc_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "GSN_Address", HFILL }},
    { &hf_gsm_map_lcs_ppr_Address,
      { "ppr-Address", "gsm_map.lcs.ppr_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "GSN_Address", HFILL }},
    { &hf_gsm_map_lcs_additional_v_gmlc_Address,
      { "additional-v-gmlc-Address", "gsm_map.lcs.additional_v_gmlc_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "GSN_Address", HFILL }},
    { &hf_gsm_map_lcs_networkNode_Number,
      { "networkNode-Number", "gsm_map.lcs.networkNode_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_lcs_lmsi,
      { "lmsi", "gsm_map.lcs.lmsi",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_gprsNodeIndicator,
      { "gprsNodeIndicator", "gsm_map.lcs.gprsNodeIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_additional_Number,
      { "additional-Number", "gsm_map.lcs.additional_Number",
        FT_UINT32, BASE_DEC, VALS(gsm_map_sm_Additional_Number_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_supportedLCS_CapabilitySets,
      { "supportedLCS-CapabilitySets", "gsm_map.lcs.supportedLCS_CapabilitySets",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_additional_LCS_CapabilitySets,
      { "additional-LCS-CapabilitySets", "gsm_map.lcs.additional_LCS_CapabilitySets",
        FT_BYTES, BASE_NONE, NULL, 0,
        "SupportedLCS_CapabilitySets", HFILL }},
    { &hf_gsm_map_lcs_mme_Name,
      { "mme-Name", "gsm_map.lcs.mme_Name",
        FT_BYTES, BASE_NONE, NULL, 0,
        "DiameterIdentity", HFILL }},
    { &hf_gsm_map_lcs_aaa_Server_Name,
      { "aaa-Server-Name", "gsm_map.lcs.aaa_Server_Name",
        FT_BYTES, BASE_NONE, NULL, 0,
        "DiameterIdentity", HFILL }},
    { &hf_gsm_map_lcs_locationType,
      { "locationType", "gsm_map.lcs.locationType",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_mlc_Number,
      { "mlc-Number", "gsm_map.lcs.mlc_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_lcs_lcs_ClientID,
      { "lcs-ClientID", "gsm_map.lcs.lcs_ClientID",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_privacyOverride,
      { "privacyOverride", "gsm_map.lcs.privacyOverride",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_imsi,
      { "imsi", "gsm_map.lcs.imsi",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_msisdn,
      { "msisdn", "gsm_map.lcs.msisdn",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_lcs_imei,
      { "imei", "gsm_map.lcs.imei",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_lcs_Priority,
      { "lcs-Priority", "gsm_map.lcs.lcs_Priority",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_lcs_QoS,
      { "lcs-QoS", "gsm_map.lcs.lcs_QoS",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_supportedGADShapes,
      { "supportedGADShapes", "gsm_map.lcs.supportedGADShapes",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_lcs_ReferenceNumber,
      { "lcs-ReferenceNumber", "gsm_map.lcs.lcs_ReferenceNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_lcsServiceTypeID,
      { "lcsServiceTypeID", "gsm_map.lcs.lcsServiceTypeID",
        FT_UINT32, BASE_DEC, VALS(gsm_map_LCSServiceTypeID_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_lcsCodeword,
      { "lcsCodeword", "gsm_map.lcs.lcsCodeword",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_lcs_PrivacyCheck,
      { "lcs-PrivacyCheck", "gsm_map.lcs.lcs_PrivacyCheck",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_areaEventInfo,
      { "areaEventInfo", "gsm_map.lcs.areaEventInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_mo_lrShortCircuitIndicator,
      { "mo-lrShortCircuitIndicator", "gsm_map.lcs.mo_lrShortCircuitIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_periodicLDRInfo,
      { "periodicLDRInfo", "gsm_map.lcs.periodicLDRInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_reportingPLMNList,
      { "reportingPLMNList", "gsm_map.lcs.reportingPLMNList",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_locationEstimateType,
      { "locationEstimateType", "gsm_map.lcs.locationEstimateType",
        FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_LocationEstimateType_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_deferredLocationEventType,
      { "deferredLocationEventType", "gsm_map.lcs.deferredLocationEventType",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_lcsClientType,
      { "lcsClientType", "gsm_map.lcs.lcsClientType",
        FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_LCSClientType_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_lcsClientExternalID,
      { "lcsClientExternalID", "gsm_map.lcs.lcsClientExternalID",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_lcsClientDialedByMS,
      { "lcsClientDialedByMS", "gsm_map.lcs.lcsClientDialedByMS",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AddressString", HFILL }},
    { &hf_gsm_map_lcs_lcsClientInternalID,
      { "lcsClientInternalID", "gsm_map.lcs.lcsClientInternalID",
        FT_UINT32, BASE_DEC, VALS(gsm_map_LCSClientInternalID_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_lcsClientName,
      { "lcsClientName", "gsm_map.lcs.lcsClientName",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_lcsAPN,
      { "lcsAPN", "gsm_map.lcs.lcsAPN",
        FT_BYTES, BASE_NONE, NULL, 0,
        "APN", HFILL }},
    { &hf_gsm_map_lcs_lcsRequestorID,
      { "lcsRequestorID", "gsm_map.lcs.lcsRequestorID",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_dataCodingScheme,
      { "dataCodingScheme", "gsm_map.lcs.dataCodingScheme",
        FT_BYTES, BASE_NONE, NULL, 0,
        "USSD_DataCodingScheme", HFILL }},
    { &hf_gsm_map_lcs_nameString,
      { "nameString", "gsm_map.lcs.nameString",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_lcs_FormatIndicator,
      { "lcs-FormatIndicator", "gsm_map.lcs.lcs_FormatIndicator",
        FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_LCS_FormatIndicator_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_requestorIDString,
      { "requestorIDString", "gsm_map.lcs.requestorIDString",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_horizontal_accuracy,
      { "horizontal-accuracy", "gsm_map.lcs.horizontal_accuracy",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_verticalCoordinateRequest,
      { "verticalCoordinateRequest", "gsm_map.lcs.verticalCoordinateRequest",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_vertical_accuracy,
      { "vertical-accuracy", "gsm_map.lcs.vertical_accuracy",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_responseTime,
      { "responseTime", "gsm_map.lcs.responseTime",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_velocityRequest,
      { "velocityRequest", "gsm_map.lcs.velocityRequest",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_responseTimeCategory,
      { "responseTimeCategory", "gsm_map.lcs.responseTimeCategory",
        FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_ResponseTimeCategory_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_lcsCodewordString,
      { "lcsCodewordString", "gsm_map.lcs.lcsCodewordString",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_callSessionUnrelated,
      { "callSessionUnrelated", "gsm_map.lcs.callSessionUnrelated",
        FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_PrivacyCheckRelatedAction_vals), 0,
        "PrivacyCheckRelatedAction", HFILL }},
    { &hf_gsm_map_lcs_callSessionRelated,
      { "callSessionRelated", "gsm_map.lcs.callSessionRelated",
        FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_PrivacyCheckRelatedAction_vals), 0,
        "PrivacyCheckRelatedAction", HFILL }},
    { &hf_gsm_map_lcs_areaDefinition,
      { "areaDefinition", "gsm_map.lcs.areaDefinition",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_occurrenceInfo,
      { "occurrenceInfo", "gsm_map.lcs.occurrenceInfo",
        FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_OccurrenceInfo_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_intervalTime,
      { "intervalTime", "gsm_map.lcs.intervalTime",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_areaList,
      { "areaList", "gsm_map.lcs.areaList",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_AreaList_item,
      { "Area", "gsm_map.lcs.Area",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_areaType,
      { "areaType", "gsm_map.lcs.areaType",
        FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_AreaType_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_areaIdentification,
      { "areaIdentification", "gsm_map.lcs.areaIdentification",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_reportingAmount,
      { "reportingAmount", "gsm_map.lcs.reportingAmount",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_reportingInterval,
      { "reportingInterval", "gsm_map.lcs.reportingInterval",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_plmn_ListPrioritized,
      { "plmn-ListPrioritized", "gsm_map.lcs.plmn_ListPrioritized",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_plmn_List,
      { "plmn-List", "gsm_map.lcs.plmn_List",
        FT_UINT32, BASE_DEC, NULL, 0,
        "PLMNList", HFILL }},
    { &hf_gsm_map_lcs_PLMNList_item,
      { "ReportingPLMN", "gsm_map.lcs.ReportingPLMN",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_plmn_Id,
      { "plmn-Id", "gsm_map.lcs.plmn_Id",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_ran_Technology,
      { "ran-Technology", "gsm_map.lcs.ran_Technology",
        FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_RAN_Technology_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_ran_PeriodicLocationSupport,
      { "ran-PeriodicLocationSupport", "gsm_map.lcs.ran_PeriodicLocationSupport",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_locationEstimate,
      { "locationEstimate", "gsm_map.lcs.locationEstimate",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Ext_GeographicalInformation", HFILL }},
    { &hf_gsm_map_lcs_ageOfLocationEstimate,
      { "ageOfLocationEstimate", "gsm_map.lcs.ageOfLocationEstimate",
        FT_UINT32, BASE_DEC, NULL, 0,
        "AgeOfLocationInformation", HFILL }},
    { &hf_gsm_map_lcs_add_LocationEstimate,
      { "add-LocationEstimate", "gsm_map.lcs.add_LocationEstimate",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Add_GeographicalInformation", HFILL }},
    { &hf_gsm_map_lcs_deferredmt_lrResponseIndicator,
      { "deferredmt-lrResponseIndicator", "gsm_map.lcs.deferredmt_lrResponseIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_geranPositioningData,
      { "geranPositioningData", "gsm_map.lcs.geranPositioningData",
        FT_BYTES, BASE_NONE, NULL, 0,
        "PositioningDataInformation", HFILL }},
    { &hf_gsm_map_lcs_utranPositioningData,
      { "utranPositioningData", "gsm_map.lcs.utranPositioningData",
        FT_BYTES, BASE_NONE, NULL, 0,
        "UtranPositioningDataInfo", HFILL }},
    { &hf_gsm_map_lcs_cellIdOrSai,
      { "cellIdOrSai", "gsm_map.lcs.cellIdOrSai",
        FT_UINT32, BASE_DEC, VALS(gsm_map_CellGlobalIdOrServiceAreaIdOrLAI_vals), 0,
        "CellGlobalIdOrServiceAreaIdOrLAI", HFILL }},
    { &hf_gsm_map_lcs_sai_Present,
      { "sai-Present", "gsm_map.lcs.sai_Present",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_accuracyFulfilmentIndicator,
      { "accuracyFulfilmentIndicator", "gsm_map.lcs.accuracyFulfilmentIndicator",
        FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_AccuracyFulfilmentIndicator_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_velocityEstimate,
      { "velocityEstimate", "gsm_map.lcs.velocityEstimate",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_geranGANSSpositioningData,
      { "geranGANSSpositioningData", "gsm_map.lcs.geranGANSSpositioningData",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_utranGANSSpositioningData,
      { "utranGANSSpositioningData", "gsm_map.lcs.utranGANSSpositioningData",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_targetServingNodeForHandover,
      { "targetServingNodeForHandover", "gsm_map.lcs.targetServingNodeForHandover",
        FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_ServingNodeAddress_vals), 0,
        "ServingNodeAddress", HFILL }},
    { &hf_gsm_map_lcs_lcs_Event,
      { "lcs-Event", "gsm_map.lcs.lcs_Event",
        FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_LCS_Event_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_na_ESRD,
      { "na-ESRD", "gsm_map.lcs.na_ESRD",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_lcs_na_ESRK,
      { "na-ESRK", "gsm_map.lcs.na_ESRK",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_lcs_slr_ArgExtensionContainer,
      { "slr-ArgExtensionContainer", "gsm_map.lcs.slr_ArgExtensionContainer",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_deferredmt_lrData,
      { "deferredmt-lrData", "gsm_map.lcs.deferredmt_lrData",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_pseudonymIndicator,
      { "pseudonymIndicator", "gsm_map.lcs.pseudonymIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_sequenceNumber,
      { "sequenceNumber", "gsm_map.lcs.sequenceNumber",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_terminationCause,
      { "terminationCause", "gsm_map.lcs.terminationCause",
        FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_TerminationCause_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_msc_Number,
      { "msc-Number", "gsm_map.lcs.msc_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_lcs_sgsn_Number,
      { "sgsn-Number", "gsm_map.lcs.sgsn_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_lcs_mme_Number,
      { "mme-Number", "gsm_map.lcs.mme_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "DiameterIdentity", HFILL }},
    { &hf_gsm_map_lcs_DeferredLocationEventType_msAvailable,
      { "msAvailable", "gsm_map.lcs.msAvailable",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_DeferredLocationEventType_enteringIntoArea,
      { "enteringIntoArea", "gsm_map.lcs.enteringIntoArea",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_DeferredLocationEventType_leavingFromArea,
      { "leavingFromArea", "gsm_map.lcs.leavingFromArea",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_DeferredLocationEventType_beingInsideArea,
      { "beingInsideArea", "gsm_map.lcs.beingInsideArea",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_DeferredLocationEventType_periodicLDR,
      { "periodicLDR", "gsm_map.lcs.periodicLDR",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPoint,
      { "ellipsoidPoint", "gsm_map.lcs.ellipsoidPoint",
        FT_BOOLEAN, 8, NULL, 0x80,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithUncertaintyCircle,
      { "ellipsoidPointWithUncertaintyCircle", "gsm_map.lcs.ellipsoidPointWithUncertaintyCircle",
        FT_BOOLEAN, 8, NULL, 0x40,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithUncertaintyEllipse,
      { "ellipsoidPointWithUncertaintyEllipse", "gsm_map.lcs.ellipsoidPointWithUncertaintyEllipse",
        FT_BOOLEAN, 8, NULL, 0x20,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_SupportedGADShapes_polygon,
      { "polygon", "gsm_map.lcs.polygon",
        FT_BOOLEAN, 8, NULL, 0x10,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithAltitude,
      { "ellipsoidPointWithAltitude", "gsm_map.lcs.ellipsoidPointWithAltitude",
        FT_BOOLEAN, 8, NULL, 0x08,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidPointWithAltitudeAndUncertaintyElipsoid,
      { "ellipsoidPointWithAltitudeAndUncertaintyElipsoid", "gsm_map.lcs.ellipsoidPointWithAltitudeAndUncertaintyElipsoid",
        FT_BOOLEAN, 8, NULL, 0x04,
        NULL, HFILL }},
    { &hf_gsm_map_lcs_SupportedGADShapes_ellipsoidArc,
      { "ellipsoidArc", "gsm_map.lcs.ellipsoidArc",
        FT_BOOLEAN, 8, NULL, 0x02,
        NULL, HFILL }},

/* --- Module MAP-GR-DataTypes --- --- ---                                    */

    { &hf_gsm_map_gr_teleservice,
      { "teleservice", "gsm_map.gr.teleservice",
        FT_UINT8, BASE_DEC, VALS(Teleservice_vals), 0,
        "Ext_TeleserviceCode", HFILL }},
    { &hf_gsm_map_gr_asciCallReference,
      { "asciCallReference", "gsm_map.gr.asciCallReference",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ASCI_CallReference", HFILL }},
    { &hf_gsm_map_gr_codec_Info,
      { "codec-Info", "gsm_map.gr.codec_Info",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_cipheringAlgorithm,
      { "cipheringAlgorithm", "gsm_map.gr.cipheringAlgorithm",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_groupKeyNumber_Vk_Id,
      { "groupKeyNumber-Vk-Id", "gsm_map.gr.groupKeyNumber_Vk_Id",
        FT_UINT32, BASE_DEC, NULL, 0,
        "GroupKeyNumber", HFILL }},
    { &hf_gsm_map_gr_groupKey,
      { "groupKey", "gsm_map.gr.groupKey",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Kc", HFILL }},
    { &hf_gsm_map_gr_priority,
      { "priority", "gsm_map.gr.priority",
        FT_UINT32, BASE_DEC, VALS(gsm_map_EMLPP_Priority_vals), 0,
        "EMLPP_Priority", HFILL }},
    { &hf_gsm_map_gr_uplinkFree,
      { "uplinkFree", "gsm_map.gr.uplinkFree",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_extensionContainer,
      { "extensionContainer", "gsm_map.gr.extensionContainer",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_vstk,
      { "vstk", "gsm_map.gr.vstk",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_vstk_rand,
      { "vstk-rand", "gsm_map.gr.vstk_rand",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_talkerChannelParameter,
      { "talkerChannelParameter", "gsm_map.gr.talkerChannelParameter",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_uplinkReplyIndicator,
      { "uplinkReplyIndicator", "gsm_map.gr.uplinkReplyIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_groupCallNumber,
      { "groupCallNumber", "gsm_map.gr.groupCallNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_gr_imsi,
      { "imsi", "gsm_map.gr.imsi",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_talkerPriority,
      { "talkerPriority", "gsm_map.gr.talkerPriority",
        FT_UINT32, BASE_DEC, VALS(gsm_map_gr_TalkerPriority_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_additionalInfo,
      { "additionalInfo", "gsm_map.gr.additionalInfo",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_uplinkRequestAck,
      { "uplinkRequestAck", "gsm_map.gr.uplinkRequestAck",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_uplinkReleaseIndication,
      { "uplinkReleaseIndication", "gsm_map.gr.uplinkReleaseIndication",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_uplinkRejectCommand,
      { "uplinkRejectCommand", "gsm_map.gr.uplinkRejectCommand",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_uplinkSeizedCommand,
      { "uplinkSeizedCommand", "gsm_map.gr.uplinkSeizedCommand",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_uplinkReleaseCommand,
      { "uplinkReleaseCommand", "gsm_map.gr.uplinkReleaseCommand",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_stateAttributes,
      { "stateAttributes", "gsm_map.gr.stateAttributes",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_emergencyModeResetCommandFlag,
      { "emergencyModeResetCommandFlag", "gsm_map.gr.emergencyModeResetCommandFlag",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_sm_RP_UI,
      { "sm-RP-UI", "gsm_map.gr.sm_RP_UI",
        FT_BYTES, BASE_NONE, NULL, 0,
        "SignalInfo", HFILL }},
    { &hf_gsm_map_gr_an_APDU,
      { "an-APDU", "gsm_map.gr.an_APDU",
        FT_NONE, BASE_NONE, NULL, 0,
        "AccessNetworkSignalInfo", HFILL }},
    { &hf_gsm_map_gr_uplinkRequest,
      { "uplinkRequest", "gsm_map.gr.uplinkRequest",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_releaseGroupCall,
      { "releaseGroupCall", "gsm_map.gr.releaseGroupCall",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_downlinkAttached,
      { "downlinkAttached", "gsm_map.gr.downlinkAttached",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_uplinkAttached,
      { "uplinkAttached", "gsm_map.gr.uplinkAttached",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_dualCommunication,
      { "dualCommunication", "gsm_map.gr.dualCommunication",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_callOriginator,
      { "callOriginator", "gsm_map.gr.callOriginator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_requestedInfo,
      { "requestedInfo", "gsm_map.gr.requestedInfo",
        FT_UINT32, BASE_DEC, VALS(gsm_map_gr_RequestedInfo_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_groupId,
      { "groupId", "gsm_map.gr.groupId",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Long_GroupId", HFILL }},
    { &hf_gsm_map_gr_cellId,
      { "cellId", "gsm_map.gr.cellId",
        FT_BYTES, BASE_NONE, NULL, 0,
        "GlobalCellId", HFILL }},
    { &hf_gsm_map_gr_tmsi,
      { "tmsi", "gsm_map.gr.tmsi",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_cksn,
      { "cksn", "gsm_map.gr.cksn",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_anchorMSC_Address,
      { "anchorMSC-Address", "gsm_map.gr.anchorMSC_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_map_gr_additionalSubscriptions,
      { "additionalSubscriptions", "gsm_map.gr.additionalSubscriptions",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_gr_kc,
      { "kc", "gsm_map.gr.kc",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},

/* --- Module MAP-DialogueInformation --- --- ---                             */

    { &hf_gsm_map_dialogue_gsm_map_dialogue_MAP_DialoguePDU_PDU,
      { "MAP-DialoguePDU", "gsm_map.dialogue.MAP_DialoguePDU",
        FT_UINT32, BASE_DEC, VALS(gsm_map_dialogue_MAP_DialoguePDU_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_dialogue_map_open,
      { "map-open", "gsm_map.dialogue.map_open",
        FT_NONE, BASE_NONE, NULL, 0,
        "MAP_OpenInfo", HFILL }},
    { &hf_gsm_map_dialogue_map_accept,
      { "map-accept", "gsm_map.dialogue.map_accept",
        FT_NONE, BASE_NONE, NULL, 0,
        "MAP_AcceptInfo", HFILL }},
    { &hf_gsm_map_dialogue_map_close,
      { "map-close", "gsm_map.dialogue.map_close",
        FT_NONE, BASE_NONE, NULL, 0,
        "MAP_CloseInfo", HFILL }},
    { &hf_gsm_map_dialogue_map_refuse,
      { "map-refuse", "gsm_map.dialogue.map_refuse",
        FT_NONE, BASE_NONE, NULL, 0,
        "MAP_RefuseInfo", HFILL }},
    { &hf_gsm_map_dialogue_map_userAbort,
      { "map-userAbort", "gsm_map.dialogue.map_userAbort",
        FT_NONE, BASE_NONE, NULL, 0,
        "MAP_UserAbortInfo", HFILL }},
    { &hf_gsm_map_dialogue_map_providerAbort,
      { "map-providerAbort", "gsm_map.dialogue.map_providerAbort",
        FT_NONE, BASE_NONE, NULL, 0,
        "MAP_ProviderAbortInfo", HFILL }},
    { &hf_gsm_map_dialogue_destinationReference,
      { "destinationReference", "gsm_map.dialogue.destinationReference",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AddressString", HFILL }},
    { &hf_gsm_map_dialogue_originationReference,
      { "originationReference", "gsm_map.dialogue.originationReference",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AddressString", HFILL }},
    { &hf_gsm_map_dialogue_extensionContainer,
      { "extensionContainer", "gsm_map.dialogue.extensionContainer",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_dialogue_reason,
      { "reason", "gsm_map.dialogue.reason",
        FT_UINT32, BASE_DEC, VALS(gsm_map_dialogue_Reason_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_dialogue_alternativeApplicationContext,
      { "alternativeApplicationContext", "gsm_map.dialogue.alternativeApplicationContext",
        FT_OID, BASE_NONE, NULL, 0,
        "OBJECT_IDENTIFIER", HFILL }},
    { &hf_gsm_map_dialogue_map_UserAbortChoice,
      { "map-UserAbortChoice", "gsm_map.dialogue.map_UserAbortChoice",
        FT_UINT32, BASE_DEC, VALS(gsm_map_dialogue_MAP_UserAbortChoice_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_map_dialogue_userSpecificReason,
      { "userSpecificReason", "gsm_map.dialogue.userSpecificReason",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_dialogue_userResourceLimitation,
      { "userResourceLimitation", "gsm_map.dialogue.userResourceLimitation",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_map_dialogue_resourceUnavailable,
      { "resourceUnavailable", "gsm_map.dialogue.resourceUnavailable",
        FT_UINT32, BASE_DEC, VALS(gsm_map_dialogue_ResourceUnavailableReason_vals), 0,
        "ResourceUnavailableReason", HFILL }},
    { &hf_gsm_map_dialogue_applicationProcedureCancellation,
      { "applicationProcedureCancellation", "gsm_map.dialogue.applicationProcedureCancellation",
        FT_UINT32, BASE_DEC, VALS(gsm_map_dialogue_ProcedureCancellationReason_vals), 0,
        "ProcedureCancellationReason", HFILL }},
    { &hf_gsm_map_dialogue_map_ProviderAbortReason,
      { "map-ProviderAbortReason", "gsm_map.dialogue.map_ProviderAbortReason",
        FT_UINT32, BASE_DEC, VALS(gsm_map_dialogue_MAP_ProviderAbortReason_vals), 0,
        NULL, HFILL }},

/* --- Module DummyMAP --- --- ---                                            */

    { &hf_gsm_old_invoke,
      { "invoke", "gsm_old.invoke",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_returnResultLast,
      { "returnResultLast", "gsm_old.returnResultLast",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReturnResult", HFILL }},
    { &hf_gsm_old_returnError,
      { "returnError", "gsm_old.returnError",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_reject,
      { "reject", "gsm_old.reject",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_returnResultNotLast,
      { "returnResultNotLast", "gsm_old.returnResultNotLast",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReturnResult", HFILL }},
    { &hf_gsm_old_invokeID,
      { "invokeID", "gsm_old.invokeID",
        FT_INT32, BASE_DEC, NULL, 0,
        "InvokeIdType", HFILL }},
    { &hf_gsm_old_linkedID,
      { "linkedID", "gsm_old.linkedID",
        FT_INT32, BASE_DEC, NULL, 0,
        "InvokeIdType", HFILL }},
    { &hf_gsm_old_opCode,
      { "opCode", "gsm_old.opCode",
        FT_UINT32, BASE_DEC, VALS(gsm_old_MAP_OPERATION_vals), 0,
        "MAP_OPERATION", HFILL }},
    { &hf_gsm_old_invokeparameter,
      { "invokeparameter", "gsm_old.invokeparameter",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_resultretres,
      { "resultretres", "gsm_old.resultretres",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_returnparameter,
      { "returnparameter", "gsm_old.returnparameter",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReturnResultParameter", HFILL }},
    { &hf_gsm_old_errorCode,
      { "errorCode", "gsm_old.errorCode",
        FT_UINT32, BASE_DEC, VALS(gsm_old_MAP_ERROR_vals), 0,
        "MAP_ERROR", HFILL }},
    { &hf_gsm_old_parameter,
      { "parameter", "gsm_old.parameter",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReturnErrorParameter", HFILL }},
    { &hf_gsm_old_invokeIDRej,
      { "invokeIDRej", "gsm_old.invokeIDRej",
        FT_UINT32, BASE_DEC, VALS(gsm_old_T_invokeIDRej_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_old_derivable,
      { "derivable", "gsm_old.derivable",
        FT_INT32, BASE_DEC, NULL, 0,
        "InvokeIdType", HFILL }},
    { &hf_gsm_old_not_derivable,
      { "not-derivable", "gsm_old.not_derivable",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_problem,
      { "problem", "gsm_old.problem",
        FT_UINT32, BASE_DEC, VALS(gsm_old_T_problem_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_old_generalProblem,
      { "generalProblem", "gsm_old.generalProblem",
        FT_INT32, BASE_DEC, VALS(gsm_old_GeneralProblem_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_old_invokeProblem,
      { "invokeProblem", "gsm_old.invokeProblem",
        FT_INT32, BASE_DEC, VALS(gsm_old_InvokeProblem_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_old_returnResultProblem,
      { "returnResultProblem", "gsm_old.returnResultProblem",
        FT_INT32, BASE_DEC, VALS(gsm_old_ReturnResultProblem_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_old_returnErrorProblem,
      { "returnErrorProblem", "gsm_old.returnErrorProblem",
        FT_INT32, BASE_DEC, VALS(gsm_old_ReturnErrorProblem_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_old_localValue,
      { "localValue", "gsm_old.localValue",
        FT_INT32, BASE_DEC, VALS(gsm_old_GSMMAPOperationLocalvalue_vals), 0,
        "OperationLocalvalue", HFILL }},
    { &hf_gsm_old_globalValue,
      { "globalValue", "gsm_old.globalValue",
        FT_OID, BASE_NONE, NULL, 0,
        "OBJECT_IDENTIFIER", HFILL }},
    { &hf_gsm_old_localValue_01,
      { "localValue", "gsm_old.localValue",
        FT_INT32, BASE_DEC, VALS(gsm_old_GSMMAPLocalErrorcode_vals), 0,
        "LocalErrorcode", HFILL }},
    { &hf_gsm_old_protocolId,
      { "protocolId", "gsm_old.protocolId",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ProtocolId_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_old_signalInfo,
      { "signalInfo", "gsm_old.signalInfo",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_extensionContainer,
      { "extensionContainer", "gsm_old.extensionContainer",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_gsm_BearerCapability,
      { "gsm-BearerCapability", "gsm_old.gsm_BearerCapability",
        FT_NONE, BASE_NONE, NULL, 0,
        "ExternalSignalInfo", HFILL }},
    { &hf_gsm_old_isdn_BearerCapability,
      { "isdn-BearerCapability", "gsm_old.isdn_BearerCapability",
        FT_NONE, BASE_NONE, NULL, 0,
        "ExternalSignalInfo", HFILL }},
    { &hf_gsm_old_call_Direction,
      { "call-Direction", "gsm_old.call_Direction",
        FT_BYTES, BASE_NONE, NULL, 0,
        "CallDirection", HFILL }},
    { &hf_gsm_old_b_Subscriber_Address,
      { "b-Subscriber-Address", "gsm_old.b_Subscriber_Address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_old_chosenChannel,
      { "chosenChannel", "gsm_old.chosenChannel",
        FT_NONE, BASE_NONE, NULL, 0,
        "ExternalSignalInfo", HFILL }},
    { &hf_gsm_old_lowerLayerCompatibility,
      { "lowerLayerCompatibility", "gsm_old.lowerLayerCompatibility",
        FT_NONE, BASE_NONE, NULL, 0,
        "ExternalSignalInfo", HFILL }},
    { &hf_gsm_old_highLayerCompatibility,
      { "highLayerCompatibility", "gsm_old.highLayerCompatibility",
        FT_NONE, BASE_NONE, NULL, 0,
        "ExternalSignalInfo", HFILL }},
    { &hf_gsm_old_sIWFSNumber,
      { "sIWFSNumber", "gsm_old.sIWFSNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_old_imsi,
      { "imsi", "gsm_old.imsi",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_vlr_Number,
      { "vlr-Number", "gsm_old.vlr_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_old_targetCellId,
      { "targetCellId", "gsm_old.targetCellId",
        FT_BYTES, BASE_NONE, NULL, 0,
        "GlobalCellId", HFILL }},
    { &hf_gsm_old_ho_NumberNotRequired,
      { "ho-NumberNotRequired", "gsm_old.ho_NumberNotRequired",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_bss_APDU,
      { "bss-APDU", "gsm_old.bss_APDU",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_handoverNumber,
      { "handoverNumber", "gsm_old.handoverNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_old_SendAuthenticationInfoResOld_item,
      { "SendAuthenticationInfoResOld item", "gsm_old.SendAuthenticationInfoResOld_item",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_rand,
      { "rand", "gsm_old.rand",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_sres,
      { "sres", "gsm_old.sres",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_kc,
      { "kc", "gsm_old.kc",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_tripletList,
      { "tripletList", "gsm_old.tripletList",
        FT_UINT32, BASE_DEC, NULL, 0,
        "TripletListold", HFILL }},
    { &hf_gsm_old_TripletListold_item,
      { "AuthenticationTriplet-v2", "gsm_old.AuthenticationTriplet_v2",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_channelType,
      { "channelType", "gsm_old.channelType",
        FT_NONE, BASE_NONE, NULL, 0,
        "ExternalSignalInfo", HFILL }},
    { &hf_gsm_old_securityHeader,
      { "securityHeader", "gsm_old.securityHeader",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_protectedPayload,
      { "protectedPayload", "gsm_old.protectedPayload",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_securityParametersIndex,
      { "securityParametersIndex", "gsm_old.securityParametersIndex",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_originalComponentIdentifier,
      { "originalComponentIdentifier", "gsm_old.originalComponentIdentifier",
        FT_UINT32, BASE_DEC, VALS(gsm_old_OriginalComponentIdentifier_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_old_initialisationVector,
      { "initialisationVector", "gsm_old.initialisationVector",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_operationCode,
      { "operationCode", "gsm_old.operationCode",
        FT_UINT32, BASE_DEC, VALS(gsm_old_OperationCode_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_old_errorCode_01,
      { "errorCode", "gsm_old.errorCode",
        FT_UINT32, BASE_DEC, VALS(gsm_old_ErrorCode_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_old_userInfo,
      { "userInfo", "gsm_old.userInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_localValue_02,
      { "localValue", "gsm_old.localValue",
        FT_INT32, BASE_DEC, NULL, 0,
        "INTEGER", HFILL }},
    { &hf_gsm_old_msisdn,
      { "msisdn", "gsm_old.msisdn",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_old_category,
      { "category", "gsm_old.category",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_basicService,
      { "basicService", "gsm_old.basicService",
        FT_UINT32, BASE_DEC, VALS(gsm_map_BasicServiceCode_vals), 0,
        "BasicServiceCode", HFILL }},
    { &hf_gsm_old_operatorSS_Code,
      { "operatorSS-Code", "gsm_old.operatorSS_Code",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_operatorSS_Code_item,
      { "operatorSS-Code item", "gsm_old.operatorSS_Code_item",
        FT_BYTES, BASE_NONE, NULL, 0,
        "OCTET_STRING_SIZE_1", HFILL }},
    { &hf_gsm_old_sm_RP_DA,
      { "sm-RP-DA", "gsm_old.sm_RP_DA",
        FT_UINT32, BASE_DEC, VALS(gsm_old_SM_RP_DAold_vals), 0,
        "SM_RP_DAold", HFILL }},
    { &hf_gsm_old_sm_RP_OA,
      { "sm-RP-OA", "gsm_old.sm_RP_OA",
        FT_UINT32, BASE_DEC, VALS(gsm_old_SM_RP_OAold_vals), 0,
        "SM_RP_OAold", HFILL }},
    { &hf_gsm_old_sm_RP_UI,
      { "sm-RP-UI", "gsm_old.sm_RP_UI",
        FT_BYTES, BASE_NONE, NULL, 0,
        "SignalInfo", HFILL }},
    { &hf_gsm_old_moreMessagesToSend,
      { "moreMessagesToSend", "gsm_old.moreMessagesToSend",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_lmsi,
      { "lmsi", "gsm_old.lmsi",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_serviceCentreAddressDA,
      { "serviceCentreAddressDA", "gsm_old.serviceCentreAddressDA",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AddressString", HFILL }},
    { &hf_gsm_old_noSM_RP_DA,
      { "noSM-RP-DA", "gsm_old.noSM_RP_DA",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_msisdn_01,
      { "msisdn", "gsm_old.msisdn",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_serviceCentreAddressOA,
      { "serviceCentreAddressOA", "gsm_old.serviceCentreAddressOA",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_noSM_RP_OA,
      { "noSM-RP-OA", "gsm_old.noSM_RP_OA",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_cug_CheckInfo,
      { "cug-CheckInfo", "gsm_old.cug_CheckInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_numberOfForwarding,
      { "numberOfForwarding", "gsm_old.numberOfForwarding",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_old_networkSignalInfo,
      { "networkSignalInfo", "gsm_old.networkSignalInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        "ExternalSignalInfo", HFILL }},
    { &hf_gsm_old_routingInfo,
      { "routingInfo", "gsm_old.routingInfo",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ch_RoutingInfo_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_old_originatingEntityNumber,
      { "originatingEntityNumber", "gsm_old.originatingEntityNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_old_msisdn_02,
      { "msisdn", "gsm_old.msisdn",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AddressString", HFILL }},

/* --- Module SS-DataTypes --- --- ---                                        */

    { &hf_gsm_ss_ss_Code,
      { "ss-Code", "gsm_ss.ss_Code",
        FT_UINT8, BASE_DEC, VALS(ssCode_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_ss_ss_Status,
      { "ss-Status", "gsm_ss.ss_Status",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_ss_Notification,
      { "ss-Notification", "gsm_ss.ss_Notification",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_callIsWaiting_Indicator,
      { "callIsWaiting-Indicator", "gsm_ss.callIsWaiting_Indicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_callOnHold_Indicator,
      { "callOnHold-Indicator", "gsm_ss.callOnHold_Indicator",
        FT_UINT32, BASE_DEC, VALS(gsm_ss_CallOnHold_Indicator_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_ss_mpty_Indicator,
      { "mpty-Indicator", "gsm_ss.mpty_Indicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_cug_Index,
      { "cug-Index", "gsm_ss.cug_Index",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_clirSuppressionRejected,
      { "clirSuppressionRejected", "gsm_ss.clirSuppressionRejected",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_ect_Indicator,
      { "ect-Indicator", "gsm_ss.ect_Indicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_nameIndicator,
      { "nameIndicator", "gsm_ss.nameIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_ccbs_Feature,
      { "ccbs-Feature", "gsm_ss.ccbs_Feature",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_alertingPattern,
      { "alertingPattern", "gsm_ss.alertingPattern",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_multicall_Indicator,
      { "multicall-Indicator", "gsm_ss.multicall_Indicator",
        FT_UINT32, BASE_DEC, VALS(gsm_ss_Multicall_Indicator_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_ss_chargingInformation,
      { "chargingInformation", "gsm_ss.chargingInformation",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_e1,
      { "e1", "gsm_ss.e1",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_e2,
      { "e2", "gsm_ss.e2",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_e3,
      { "e3", "gsm_ss.e3",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_e4,
      { "e4", "gsm_ss.e4",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_e5,
      { "e5", "gsm_ss.e5",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_e6,
      { "e6", "gsm_ss.e6",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_e7,
      { "e7", "gsm_ss.e7",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_suppressPrefCUG,
      { "suppressPrefCUG", "gsm_ss.suppressPrefCUG",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_suppressOA,
      { "suppressOA", "gsm_ss.suppressOA",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_ect_CallState,
      { "ect-CallState", "gsm_ss.ect_CallState",
        FT_UINT32, BASE_DEC, VALS(gsm_ss_ECT_CallState_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_ss_rdn,
      { "rdn", "gsm_ss.rdn",
        FT_UINT32, BASE_DEC, VALS(gsm_ss_RDN_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_ss_callingName,
      { "callingName", "gsm_ss.callingName",
        FT_UINT32, BASE_DEC, VALS(gsm_ss_Name_vals), 0,
        "Name", HFILL }},
    { &hf_gsm_ss_namePresentationAllowed,
      { "namePresentationAllowed", "gsm_ss.namePresentationAllowed",
        FT_NONE, BASE_NONE, NULL, 0,
        "NameSet", HFILL }},
    { &hf_gsm_ss_presentationRestricted,
      { "presentationRestricted", "gsm_ss.presentationRestricted",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_nameUnavailable,
      { "nameUnavailable", "gsm_ss.nameUnavailable",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_namePresentationRestricted,
      { "namePresentationRestricted", "gsm_ss.namePresentationRestricted",
        FT_NONE, BASE_NONE, NULL, 0,
        "NameSet", HFILL }},
    { &hf_gsm_ss_dataCodingScheme,
      { "dataCodingScheme", "gsm_ss.dataCodingScheme",
        FT_BYTES, BASE_NONE, NULL, 0,
        "USSD_DataCodingScheme", HFILL }},
    { &hf_gsm_ss_lengthInCharacters,
      { "lengthInCharacters", "gsm_ss.lengthInCharacters",
        FT_INT32, BASE_DEC, NULL, 0,
        "INTEGER", HFILL }},
    { &hf_gsm_ss_nameString,
      { "nameString", "gsm_ss.nameString",
        FT_BYTES, BASE_NONE, NULL, 0,
        "USSD_String", HFILL }},
    { &hf_gsm_ss_presentationAllowedAddress,
      { "presentationAllowedAddress", "gsm_ss.presentationAllowedAddress",
        FT_NONE, BASE_NONE, NULL, 0,
        "RemotePartyNumber", HFILL }},
    { &hf_gsm_ss_numberNotAvailableDueToInterworking,
      { "numberNotAvailableDueToInterworking", "gsm_ss.numberNotAvailableDueToInterworking",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_presentationRestrictedAddress,
      { "presentationRestrictedAddress", "gsm_ss.presentationRestrictedAddress",
        FT_NONE, BASE_NONE, NULL, 0,
        "RemotePartyNumber", HFILL }},
    { &hf_gsm_ss_partyNumber,
      { "partyNumber", "gsm_ss.partyNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_ss_partyNumberSubaddress,
      { "partyNumberSubaddress", "gsm_ss.partyNumberSubaddress",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_SubaddressString", HFILL }},
    { &hf_gsm_ss_deflectedToNumber,
      { "deflectedToNumber", "gsm_ss.deflectedToNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "AddressString", HFILL }},
    { &hf_gsm_ss_deflectedToSubaddress,
      { "deflectedToSubaddress", "gsm_ss.deflectedToSubaddress",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_SubaddressString", HFILL }},
    { &hf_gsm_ss_uUS_Service,
      { "uUS-Service", "gsm_ss.uUS_Service",
        FT_UINT32, BASE_DEC, VALS(gsm_ss_UUS_Service_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_ss_uUS_Required,
      { "uUS-Required", "gsm_ss.uUS_Required",
        FT_BOOLEAN, BASE_NONE, NULL, 0,
        "BOOLEAN", HFILL }},
    { &hf_gsm_ss_notificationType,
      { "notificationType", "gsm_ss.notificationType",
        FT_UINT32, BASE_DEC, VALS(gsm_map_ms_NotificationToMSUser_vals), 0,
        "NotificationToMSUser", HFILL }},
    { &hf_gsm_ss_locationType,
      { "locationType", "gsm_ss.locationType",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_lcsClientExternalID,
      { "lcsClientExternalID", "gsm_ss.lcsClientExternalID",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_lcsClientName,
      { "lcsClientName", "gsm_ss.lcsClientName",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_lcsRequestorID,
      { "lcsRequestorID", "gsm_ss.lcsRequestorID",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_lcsCodeword,
      { "lcsCodeword", "gsm_ss.lcsCodeword",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_lcsServiceTypeID,
      { "lcsServiceTypeID", "gsm_ss.lcsServiceTypeID",
        FT_UINT32, BASE_DEC, VALS(gsm_map_LCSServiceTypeID_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_ss_verificationResponse,
      { "verificationResponse", "gsm_ss.verificationResponse",
        FT_UINT32, BASE_DEC, VALS(gsm_ss_VerificationResponse_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_ss_molr_Type,
      { "molr-Type", "gsm_ss.molr_Type",
        FT_UINT32, BASE_DEC, VALS(gsm_ss_MOLR_Type_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_ss_locationMethod,
      { "locationMethod", "gsm_ss.locationMethod",
        FT_UINT32, BASE_DEC, VALS(gsm_ss_LocationMethod_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_ss_lcs_QoS,
      { "lcs-QoS", "gsm_ss.lcs_QoS",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_mlc_Number,
      { "mlc-Number", "gsm_ss.mlc_Number",
        FT_BYTES, BASE_NONE, NULL, 0,
        "ISDN_AddressString", HFILL }},
    { &hf_gsm_ss_gpsAssistanceData,
      { "gpsAssistanceData", "gsm_ss.gpsAssistanceData",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_supportedGADShapes,
      { "supportedGADShapes", "gsm_ss.supportedGADShapes",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_ageOfLocationInfo,
      { "ageOfLocationInfo", "gsm_ss.ageOfLocationInfo",
        FT_UINT32, BASE_DEC, NULL, 0,
        "AgeOfLocationInformation", HFILL }},
    { &hf_gsm_ss_pseudonymIndicator,
      { "pseudonymIndicator", "gsm_ss.pseudonymIndicator",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_h_gmlc_address,
      { "h-gmlc-address", "gsm_ss.h_gmlc_address",
        FT_BYTES, BASE_NONE, NULL, 0,
        "GSN_Address", HFILL }},
    { &hf_gsm_ss_locationEstimate,
      { "locationEstimate", "gsm_ss.locationEstimate",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Ext_GeographicalInformation", HFILL }},
    { &hf_gsm_ss_velocityEstimate,
      { "velocityEstimate", "gsm_ss.velocityEstimate",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_referenceNumber,
      { "referenceNumber", "gsm_ss.referenceNumber",
        FT_BYTES, BASE_NONE, NULL, 0,
        "LCS_ReferenceNumber", HFILL }},
    { &hf_gsm_ss_periodicLDRInfo,
      { "periodicLDRInfo", "gsm_ss.periodicLDRInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_locationUpdateRequest,
      { "locationUpdateRequest", "gsm_ss.locationUpdateRequest",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_sequenceNumber,
      { "sequenceNumber", "gsm_ss.sequenceNumber",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_terminationCause,
      { "terminationCause", "gsm_ss.terminationCause",
        FT_UINT32, BASE_DEC, VALS(gsm_ss_TerminationCause_vals), 0,
        NULL, HFILL }},
    { &hf_gsm_ss_mo_lrShortCircuit,
      { "mo-lrShortCircuit", "gsm_ss.mo_lrShortCircuit",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_ganssAssistanceData,
      { "ganssAssistanceData", "gsm_ss.ganssAssistanceData",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_multiplePositioningProtocolPDUs,
      { "multiplePositioningProtocolPDUs", "gsm_ss.multiplePositioningProtocolPDUs",
        FT_UINT32, BASE_DEC, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_MultiplePositioningProtocolPDUs_item,
      { "PositioningProtocolPDU", "gsm_ss.PositioningProtocolPDU",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_decipheringKeys,
      { "decipheringKeys", "gsm_ss.decipheringKeys",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_add_LocationEstimate,
      { "add-LocationEstimate", "gsm_ss.add_LocationEstimate",
        FT_BYTES, BASE_NONE, NULL, 0,
        "Add_GeographicalInformation", HFILL }},
    { &hf_gsm_ss_reportingPLMNList,
      { "reportingPLMNList", "gsm_ss.reportingPLMNList",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_deferredLocationEventType,
      { "deferredLocationEventType", "gsm_ss.deferredLocationEventType",
        FT_BYTES, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_areaEventInfo,
      { "areaEventInfo", "gsm_ss.areaEventInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        NULL, HFILL }},
    { &hf_gsm_ss_qoS,
      { "qoS", "gsm_ss.qoS",
        FT_NONE, BASE_NONE, NULL, 0,
        "LCS_QoS", HFILL }},

/*--- End of included file: packet-gsm_map-hfarr.c ---*/
#line 2465 "../../asn1/gsm_map/packet-gsm_map-template.c"
  };

  /* List of subtrees */
  static gint *ett[] = {
    &ett_gsm_map,
    &ett_gsm_map_InvokeId,
    &ett_gsm_map_InvokePDU,
    &ett_gsm_map_ReturnResultPDU,
    &ett_gsm_map_ReturnErrorPDU,
    &ett_gsm_map_ReturnResult_result,
    &ett_gsm_map_ReturnError_result,
    &ett_gsm_map_GSMMAPPDU,
    &ett_gsm_map_ext_qos_subscribed,
    &ett_gsm_map_pdptypenumber,
    &ett_gsm_map_RAIdentity,
    &ett_gsm_map_LAIFixedLength,
    &ett_gsm_map_isdn_address_string,
    &ett_gsm_map_geo_desc,
    &ett_gsm_map_LongSignalInfo,
    &ett_gsm_map_RadioResourceInformation,
    &ett_gsm_map_MSNetworkCapability,
    &ett_gsm_map_MSRadioAccessCapability,
    &ett_gsm_map_externalsignalinfo,
    &ett_gsm_map_cbs_data_coding,
    &ett_gsm_map_GlobalCellId,
    &ett_gsm_map_GeographicalInformation,


/*--- Included file: packet-gsm_map-ettarr.c ---*/
#line 1 "../../asn1/gsm_map/packet-gsm_map-ettarr.c"

/* --- Module MAP-ExtensionDataTypes --- --- ---                              */

    &ett_gsm_map_ExtensionContainer,
    &ett_gsm_map_SLR_ArgExtensionContainer,
    &ett_gsm_map_PrivateExtensionList,
    &ett_gsm_map_PrivateExtension,
    &ett_gsm_map_PCS_Extensions,
    &ett_gsm_map_SLR_Arg_PCS_Extensions,

/* --- Module MAP-CommonDataTypes --- --- ---                                 */

    &ett_gsm_map_ExternalSignalInfo,
    &ett_gsm_map_Ext_ExternalSignalInfo,
    &ett_gsm_map_AccessNetworkSignalInfo,
    &ett_gsm_map_Identity,
    &ett_gsm_map_IMSI_WithLMSI,
    &ett_gsm_map_HLR_List,
    &ett_gsm_map_NAEA_PreferredCI,
    &ett_gsm_map_SubscriberIdentity,
    &ett_gsm_map_LCSClientExternalID,
    &ett_gsm_map_CellGlobalIdOrServiceAreaIdOrLAI,
    &ett_gsm_map_BasicServiceCode,
    &ett_gsm_map_Ext_BasicServiceCode,
    &ett_gsm_map_EMLPP_Info,
    &ett_gsm_map_MC_SS_Info,

/* --- Module MAP-SS-DataTypes --- --- ---                                    */

    &ett_gsm_map_ss_RegisterSS_Arg,
    &ett_gsm_map_ss_SS_Info,
    &ett_gsm_map_ss_ForwardingInfo,
    &ett_gsm_map_ss_ForwardingFeatureList,
    &ett_gsm_map_ss_ForwardingFeature,
    &ett_gsm_map_ss_CallBarringInfo,
    &ett_gsm_map_ss_CallBarringFeatureList,
    &ett_gsm_map_ss_CallBarringFeature,
    &ett_gsm_map_ss_SS_Data,
    &ett_gsm_map_ss_SS_SubscriptionOption,
    &ett_gsm_map_ss_SS_ForBS_Code,
    &ett_gsm_map_ss_GenericServiceInfo,
    &ett_gsm_map_ss_CCBS_FeatureList,
    &ett_gsm_map_ss_CCBS_Feature,
    &ett_gsm_map_ss_InterrogateSS_Res,
    &ett_gsm_map_ss_USSD_Arg,
    &ett_gsm_map_ss_USSD_Res,
    &ett_gsm_map_ss_SS_List,
    &ett_gsm_map_ss_BasicServiceGroupList,
    &ett_gsm_map_ss_SS_InvocationNotificationArg,
    &ett_gsm_map_ss_SS_InvocationNotificationRes,
    &ett_gsm_map_ss_SS_EventSpecification,
    &ett_gsm_map_ss_RegisterCC_EntryArg,
    &ett_gsm_map_ss_CCBS_Data,
    &ett_gsm_map_ss_ServiceIndicator,
    &ett_gsm_map_ss_RegisterCC_EntryRes,
    &ett_gsm_map_ss_EraseCC_EntryArg,
    &ett_gsm_map_ss_EraseCC_EntryRes,

/* --- Module MAP-ER-DataTypes --- --- ---                                    */

    &ett_gsm_map_er_RoamingNotAllowedParam,
    &ett_gsm_map_er_CallBarredParam,
    &ett_gsm_map_er_ExtensibleCallBarredParam,
    &ett_gsm_map_er_CUG_RejectParam,
    &ett_gsm_map_er_SS_IncompatibilityCause,
    &ett_gsm_map_er_SM_DeliveryFailureCause,
    &ett_gsm_map_er_AbsentSubscriberSM_Param,
    &ett_gsm_map_er_SystemFailureParam,
    &ett_gsm_map_er_ExtensibleSystemFailureParam,
    &ett_gsm_map_er_DataMissingParam,
    &ett_gsm_map_er_UnexpectedDataParam,
    &ett_gsm_map_er_FacilityNotSupParam,
    &ett_gsm_map_er_OR_NotAllowedParam,
    &ett_gsm_map_er_UnknownSubscriberParam,
    &ett_gsm_map_er_NumberChangedParam,
    &ett_gsm_map_er_UnidentifiedSubParam,
    &ett_gsm_map_er_IllegalSubscriberParam,
    &ett_gsm_map_er_IllegalEquipmentParam,
    &ett_gsm_map_er_BearerServNotProvParam,
    &ett_gsm_map_er_TeleservNotProvParam,
    &ett_gsm_map_er_TracingBufferFullParam,
    &ett_gsm_map_er_NoRoamingNbParam,
    &ett_gsm_map_er_AbsentSubscriberParam,
    &ett_gsm_map_er_BusySubscriberParam,
    &ett_gsm_map_er_NoSubscriberReplyParam,
    &ett_gsm_map_er_ForwardingViolationParam,
    &ett_gsm_map_er_ForwardingFailedParam,
    &ett_gsm_map_er_ATI_NotAllowedParam,
    &ett_gsm_map_er_ATSI_NotAllowedParam,
    &ett_gsm_map_er_ATM_NotAllowedParam,
    &ett_gsm_map_er_IllegalSS_OperationParam,
    &ett_gsm_map_er_SS_NotAvailableParam,
    &ett_gsm_map_er_SS_SubscriptionViolationParam,
    &ett_gsm_map_er_InformationNotAvailableParam,
    &ett_gsm_map_er_SubBusyForMT_SMS_Param,
    &ett_gsm_map_er_MessageWaitListFullParam,
    &ett_gsm_map_er_ResourceLimitationParam,
    &ett_gsm_map_er_NoGroupCallNbParam,
    &ett_gsm_map_er_IncompatibleTerminalParam,
    &ett_gsm_map_er_ShortTermDenialParam,
    &ett_gsm_map_er_LongTermDenialParam,
    &ett_gsm_map_er_UnauthorizedRequestingNetwork_Param,
    &ett_gsm_map_er_UnauthorizedLCSClient_Param,
    &ett_gsm_map_er_PositionMethodFailure_Param,
    &ett_gsm_map_er_UnknownOrUnreachableLCSClient_Param,
    &ett_gsm_map_er_MM_EventNotSupported_Param,
    &ett_gsm_map_er_TargetCellOutsideGCA_Param,
    &ett_gsm_map_er_OngoingGroupCallParam,

/* --- Module MAP-SM-DataTypes --- --- ---                                    */

    &ett_gsm_map_sm_RoutingInfoForSM_Arg,
    &ett_gsm_map_sm_RoutingInfoForSM_Res,
    &ett_gsm_map_sm_LocationInfoWithLMSI,
    &ett_gsm_map_sm_Additional_Number,
    &ett_gsm_map_sm_MO_ForwardSM_Arg,
    &ett_gsm_map_sm_MO_ForwardSM_Res,
    &ett_gsm_map_sm_MT_ForwardSM_Arg,
    &ett_gsm_map_sm_MT_ForwardSM_Res,
    &ett_gsm_map_sm_SM_RP_DA,
    &ett_gsm_map_sm_SM_RP_OA,
    &ett_gsm_map_sm_ReportSM_DeliveryStatusArg,
    &ett_gsm_map_sm_ReportSM_DeliveryStatusRes,
    &ett_gsm_map_sm_AlertServiceCentreArg,
    &ett_gsm_map_sm_InformServiceCentreArg,
    &ett_gsm_map_sm_MW_Status,
    &ett_gsm_map_sm_ReadyForSM_Arg,
    &ett_gsm_map_sm_ReadyForSM_Res,
    &ett_gsm_map_sm_MT_ForwardSM_VGCS_Arg,
    &ett_gsm_map_sm_MT_ForwardSM_VGCS_Res,
    &ett_gsm_map_sm_DispatcherList,

/* --- Module MAP-OM-DataTypes --- --- ---                                    */

    &ett_gsm_map_om_ActivateTraceModeArg,
    &ett_gsm_map_om_TraceDepthList,
    &ett_gsm_map_om_TraceNE_TypeList,
    &ett_gsm_map_om_TraceInterfaceList,
    &ett_gsm_map_om_MSC_S_InterfaceList,
    &ett_gsm_map_om_MGW_InterfaceList,
    &ett_gsm_map_om_SGSN_InterfaceList,
    &ett_gsm_map_om_GGSN_InterfaceList,
    &ett_gsm_map_om_RNC_InterfaceList,
    &ett_gsm_map_om_BMSC_InterfaceList,
    &ett_gsm_map_om_MME_InterfaceList,
    &ett_gsm_map_om_SGW_InterfaceList,
    &ett_gsm_map_om_PGW_InterfaceList,
    &ett_gsm_map_om_ENB_InterfaceList,
    &ett_gsm_map_om_TraceEventList,
    &ett_gsm_map_om_MSC_S_EventList,
    &ett_gsm_map_om_MGW_EventList,
    &ett_gsm_map_om_SGSN_EventList,
    &ett_gsm_map_om_GGSN_EventList,
    &ett_gsm_map_om_BMSC_EventList,
    &ett_gsm_map_om_MME_EventList,
    &ett_gsm_map_om_SGW_EventList,
    &ett_gsm_map_om_PGW_EventList,
    &ett_gsm_map_om_TracePropagationList,
    &ett_gsm_map_om_ActivateTraceModeRes,
    &ett_gsm_map_om_DeactivateTraceModeArg,
    &ett_gsm_map_om_DeactivateTraceModeRes,

/* --- Module MAP-MS-DataTypes --- --- ---                                    */

    &ett_gsm_map_ms_UpdateLocationArg,
    &ett_gsm_map_ms_VLR_Capability,
    &ett_gsm_map_ms_SupportedRAT_Types,
    &ett_gsm_map_ms_SuperChargerInfo,
    &ett_gsm_map_ms_SupportedLCS_CapabilitySets,
    &ett_gsm_map_ms_UpdateLocationRes,
    &ett_gsm_map_ms_ADD_Info,
    &ett_gsm_map_ms_PagingArea,
    &ett_gsm_map_ms_LocationArea,
    &ett_gsm_map_ms_CancelLocationArg_U,
    &ett_gsm_map_ms_CancelLocationRes,
    &ett_gsm_map_ms_PurgeMS_Arg_U,
    &ett_gsm_map_ms_PurgeMS_Res,
    &ett_gsm_map_ms_SendIdentificationArg,
    &ett_gsm_map_ms_SendIdentificationRes_U,
    &ett_gsm_map_ms_AuthenticationSetList,
    &ett_gsm_map_ms_TripletList,
    &ett_gsm_map_ms_QuintupletList,
    &ett_gsm_map_ms_AuthenticationTriplet,
    &ett_gsm_map_ms_AuthenticationQuintuplet,
    &ett_gsm_map_ms_CurrentSecurityContext,
    &ett_gsm_map_ms_GSM_SecurityContextData,
    &ett_gsm_map_ms_UMTS_SecurityContextData,
    &ett_gsm_map_ms_AuthenticationFailureReportArg,
    &ett_gsm_map_ms_AuthenticationFailureReportRes,
    &ett_gsm_map_ms_UpdateGprsLocationArg,
    &ett_gsm_map_ms_EPS_Info,
    &ett_gsm_map_ms_PDN_GW_Update,
    &ett_gsm_map_ms_ISR_Information,
    &ett_gsm_map_ms_SGSN_Capability,
    &ett_gsm_map_ms_SupportedFeatures,
    &ett_gsm_map_ms_UpdateGprsLocationRes,
    &ett_gsm_map_ms_ForwardAccessSignalling_Arg_U,
    &ett_gsm_map_ms_AllowedUMTS_Algorithms,
    &ett_gsm_map_ms_PrepareHO_Arg_U,
    &ett_gsm_map_ms_BSSMAP_ServiceHandoverList,
    &ett_gsm_map_ms_BSSMAP_ServiceHandoverInfo,
    &ett_gsm_map_ms_RadioResourceList,
    &ett_gsm_map_ms_RadioResource,
    &ett_gsm_map_ms_PrepareHO_Res_U,
    &ett_gsm_map_ms_SelectedUMTS_Algorithms,
    &ett_gsm_map_ms_ChosenRadioResourceInformation,
    &ett_gsm_map_ms_PrepareSubsequentHO_Arg_U,
    &ett_gsm_map_ms_PrepareSubsequentHO_Res_U,
    &ett_gsm_map_ms_ProcessAccessSignalling_Arg_U,
    &ett_gsm_map_ms_AoIPCodecsList,
    &ett_gsm_map_ms_SupportedCodecsList,
    &ett_gsm_map_ms_CodecList,
    &ett_gsm_map_ms_SendEndSignal_Arg_U,
    &ett_gsm_map_ms_SendEndSignal_Res,
    &ett_gsm_map_ms_RelocationNumberList,
    &ett_gsm_map_ms_RelocationNumber,
    &ett_gsm_map_ms_SendAuthenticationInfoArg,
    &ett_gsm_map_ms_Re_synchronisationInfo,
    &ett_gsm_map_ms_SendAuthenticationInfoRes_U,
    &ett_gsm_map_ms_EPS_AuthenticationSetList,
    &ett_gsm_map_ms_EPC_AV,
    &ett_gsm_map_ms_CheckIMEI_Arg,
    &ett_gsm_map_ms_CheckIMEI_Res,
    &ett_gsm_map_ms_RequestedEquipmentInfo,
    &ett_gsm_map_ms_UESBI_Iu,
    &ett_gsm_map_ms_InsertSubscriberDataArg,
    &ett_gsm_map_ms_CSG_SubscriptionDataList,
    &ett_gsm_map_ms_CSG_SubscriptionData,
    &ett_gsm_map_ms_EPS_SubscriptionData,
    &ett_gsm_map_ms_APN_ConfigurationProfile,
    &ett_gsm_map_ms_EPS_DataList,
    &ett_gsm_map_ms_APN_Configuration,
    &ett_gsm_map_ms_EPS_QoS_Subscribed,
    &ett_gsm_map_ms_AMBR,
    &ett_gsm_map_ms_SpecificAPNInfoList,
    &ett_gsm_map_ms_SpecificAPNInfo,
    &ett_gsm_map_ms_Allocation_Retention_Priority,
    &ett_gsm_map_ms_PDN_GW_Identity,
    &ett_gsm_map_ms_AccessRestrictionData,
    &ett_gsm_map_ms_LCSInformation,
    &ett_gsm_map_ms_GMLC_List,
    &ett_gsm_map_ms_GPRSDataList,
    &ett_gsm_map_ms_PDP_Context,
    &ett_gsm_map_ms_GPRSSubscriptionData,
    &ett_gsm_map_ms_SGSN_CAMEL_SubscriptionInfo,
    &ett_gsm_map_ms_GPRS_CSI,
    &ett_gsm_map_ms_GPRS_CamelTDPDataList,
    &ett_gsm_map_ms_GPRS_CamelTDPData,
    &ett_gsm_map_ms_LSADataList,
    &ett_gsm_map_ms_LSAData,
    &ett_gsm_map_ms_LSAInformation,
    &ett_gsm_map_ms_SubscriberData,
    &ett_gsm_map_ms_BearerServiceList,
    &ett_gsm_map_ms_TeleserviceList,
    &ett_gsm_map_ms_ODB_Data,
    &ett_gsm_map_ms_ODB_GeneralData,
    &ett_gsm_map_ms_ODB_HPLMN_Data,
    &ett_gsm_map_ms_Ext_SS_InfoList,
    &ett_gsm_map_ms_Ext_SS_Info,
    &ett_gsm_map_ms_Ext_ForwInfo,
    &ett_gsm_map_ms_Ext_ForwFeatureList,
    &ett_gsm_map_ms_Ext_ForwFeature,
    &ett_gsm_map_ms_Ext_CallBarInfo,
    &ett_gsm_map_ms_Ext_CallBarFeatureList,
    &ett_gsm_map_ms_Ext_CallBarringFeature,
    &ett_gsm_map_ms_CUG_Info,
    &ett_gsm_map_ms_CUG_SubscriptionList,
    &ett_gsm_map_ms_CUG_Subscription,
    &ett_gsm_map_ms_CUG_FeatureList,
    &ett_gsm_map_ms_Ext_BasicServiceGroupList,
    &ett_gsm_map_ms_CUG_Feature,
    &ett_gsm_map_ms_Ext_SS_Data,
    &ett_gsm_map_ms_LCS_PrivacyExceptionList,
    &ett_gsm_map_ms_LCS_PrivacyClass,
    &ett_gsm_map_ms_ExternalClientList,
    &ett_gsm_map_ms_PLMNClientList,
    &ett_gsm_map_ms_Ext_ExternalClientList,
    &ett_gsm_map_ms_ExternalClient,
    &ett_gsm_map_ms_ServiceTypeList,
    &ett_gsm_map_ms_ServiceType,
    &ett_gsm_map_ms_MOLR_List,
    &ett_gsm_map_ms_MOLR_Class,
    &ett_gsm_map_ms_ZoneCodeList,
    &ett_gsm_map_ms_InsertSubscriberDataRes,
    &ett_gsm_map_ms_DeleteSubscriberDataArg,
    &ett_gsm_map_ms_SpecificCSI_Withdraw,
    &ett_gsm_map_ms_GPRSSubscriptionDataWithdraw,
    &ett_gsm_map_ms_EPS_SubscriptionDataWithdraw,
    &ett_gsm_map_ms_ContextIdList,
    &ett_gsm_map_ms_LSAInformationWithdraw,
    &ett_gsm_map_ms_LSAIdentityList,
    &ett_gsm_map_ms_BasicServiceList,
    &ett_gsm_map_ms_DeleteSubscriberDataRes,
    &ett_gsm_map_ms_VlrCamelSubscriptionInfo,
    &ett_gsm_map_ms_MT_smsCAMELTDP_CriteriaList,
    &ett_gsm_map_ms_MT_smsCAMELTDP_Criteria,
    &ett_gsm_map_ms_TPDU_TypeCriterion,
    &ett_gsm_map_ms_D_CSI,
    &ett_gsm_map_ms_DP_AnalysedInfoCriteriaList,
    &ett_gsm_map_ms_DP_AnalysedInfoCriterium,
    &ett_gsm_map_ms_SS_CSI,
    &ett_gsm_map_ms_SS_CamelData,
    &ett_gsm_map_ms_SS_EventList,
    &ett_gsm_map_ms_O_CSI,
    &ett_gsm_map_ms_O_BcsmCamelTDPDataList,
    &ett_gsm_map_ms_O_BcsmCamelTDPData,
    &ett_gsm_map_ms_O_BcsmCamelTDPCriteriaList,
    &ett_gsm_map_ms_T_BCSM_CAMEL_TDP_CriteriaList,
    &ett_gsm_map_ms_O_BcsmCamelTDP_Criteria,
    &ett_gsm_map_ms_T_BCSM_CAMEL_TDP_Criteria,
    &ett_gsm_map_ms_DestinationNumberCriteria,
    &ett_gsm_map_ms_DestinationNumberList,
    &ett_gsm_map_ms_DestinationNumberLengthList,
    &ett_gsm_map_ms_BasicServiceCriteria,
    &ett_gsm_map_ms_O_CauseValueCriteria,
    &ett_gsm_map_ms_T_CauseValueCriteria,
    &ett_gsm_map_ms_SupportedCamelPhases,
    &ett_gsm_map_ms_OfferedCamel4CSIs,
    &ett_gsm_map_ms_OfferedCamel4Functionalities,
    &ett_gsm_map_ms_SMS_CSI,
    &ett_gsm_map_ms_SMS_CAMEL_TDP_DataList,
    &ett_gsm_map_ms_SMS_CAMEL_TDP_Data,
    &ett_gsm_map_ms_M_CSI,
    &ett_gsm_map_ms_MG_CSI,
    &ett_gsm_map_ms_MobilityTriggers,
    &ett_gsm_map_ms_T_CSI,
    &ett_gsm_map_ms_T_BcsmCamelTDPDataList,
    &ett_gsm_map_ms_T_BcsmCamelTDPData,
    &ett_gsm_map_ms_SendRoutingInfoForGprsArg,
    &ett_gsm_map_ms_SendRoutingInfoForGprsRes,
    &ett_gsm_map_ms_FailureReportArg,
    &ett_gsm_map_ms_FailureReportRes,
    &ett_gsm_map_ms_NoteMsPresentForGprsArg,
    &ett_gsm_map_ms_NoteMsPresentForGprsRes,
    &ett_gsm_map_ms_ResetArg,
    &ett_gsm_map_ms_RestoreDataArg,
    &ett_gsm_map_ms_RestoreDataRes,
    &ett_gsm_map_ms_VBSDataList,
    &ett_gsm_map_ms_VGCSDataList,
    &ett_gsm_map_ms_VoiceGroupCallData,
    &ett_gsm_map_ms_AdditionalSubscriptions,
    &ett_gsm_map_ms_VoiceBroadcastData,
    &ett_gsm_map_ms_ProvideSubscriberInfoArg,
    &ett_gsm_map_ms_ProvideSubscriberInfoRes,
    &ett_gsm_map_ms_SubscriberInfo,
    &ett_gsm_map_ms_MNPInfoRes,
    &ett_gsm_map_ms_GPRSMSClass,
    &ett_gsm_map_ms_RequestedInfo,
    &ett_gsm_map_ms_RequestedNodes,
    &ett_gsm_map_ms_LocationInformation,
    &ett_gsm_map_ms_LocationInformationEPS,
    &ett_gsm_map_ms_LocationInformationGPRS,
    &ett_gsm_map_ms_UserCSGInformation,
    &ett_gsm_map_ms_SubscriberState,
    &ett_gsm_map_ms_PS_SubscriberState,
    &ett_gsm_map_ms_PDP_ContextInfoList,
    &ett_gsm_map_ms_PDP_ContextInfo,
    &ett_gsm_map_ms_AnyTimeInterrogationArg,
    &ett_gsm_map_ms_AnyTimeInterrogationRes,
    &ett_gsm_map_ms_AnyTimeSubscriptionInterrogationArg,
    &ett_gsm_map_ms_AnyTimeSubscriptionInterrogationRes,
    &ett_gsm_map_ms_RequestedSubscriptionInfo,
    &ett_gsm_map_ms_MSISDN_BS_List,
    &ett_gsm_map_ms_MSISDN_BS,
    &ett_gsm_map_ms_CallForwardingData,
    &ett_gsm_map_ms_CallBarringData,
    &ett_gsm_map_ms_ODB_Info,
    &ett_gsm_map_ms_CAMEL_SubscriptionInfo,
    &ett_gsm_map_ms_AnyTimeModificationArg,
    &ett_gsm_map_ms_ModificationRequestFor_CSG,
    &ett_gsm_map_ms_ServingNode,
    &ett_gsm_map_ms_AnyTimeModificationRes,
    &ett_gsm_map_ms_ModificationRequestFor_CF_Info,
    &ett_gsm_map_ms_ModificationRequestFor_CB_Info,
    &ett_gsm_map_ms_ModificationRequestFor_ODB_data,
    &ett_gsm_map_ms_ModificationRequestFor_CSI,
    &ett_gsm_map_ms_ModificationRequestFor_IP_SM_GW_Data,
    &ett_gsm_map_ms_NoteSubscriberDataModifiedArg,
    &ett_gsm_map_ms_NoteSubscriberDataModifiedRes,
    &ett_gsm_map_ms_NoteMM_EventArg,
    &ett_gsm_map_ms_NoteMM_EventRes,
    &ett_gsm_map_ms_Ext_SS_InfoFor_CSE,
    &ett_gsm_map_ms_Ext_ForwardingInfoFor_CSE,
    &ett_gsm_map_ms_Ext_CallBarringInfoFor_CSE,

/* --- Module MAP-CH-DataTypes --- --- ---                                    */

    &ett_gsm_map_ch_CUG_CheckInfo,
    &ett_gsm_map_ch_SendRoutingInfoArg,
    &ett_gsm_map_ch_SuppressMTSS,
    &ett_gsm_map_ch_SendRoutingInfoRes_U,
    &ett_gsm_map_ch_AllowedServices,
    &ett_gsm_map_ch_CCBS_Indicators,
    &ett_gsm_map_ch_RoutingInfo,
    &ett_gsm_map_ch_ForwardingData,
    &ett_gsm_map_ch_ProvideRoamingNumberArg,
    &ett_gsm_map_ch_ProvideRoamingNumberRes,
    &ett_gsm_map_ch_ResumeCallHandlingArg,
    &ett_gsm_map_ch_UU_Data,
    &ett_gsm_map_ch_ResumeCallHandlingRes,
    &ett_gsm_map_ch_CamelInfo,
    &ett_gsm_map_ch_ExtendedRoutingInfo,
    &ett_gsm_map_ch_CamelRoutingInfo,
    &ett_gsm_map_ch_GmscCamelSubscriptionInfo,
    &ett_gsm_map_ch_SetReportingStateArg,
    &ett_gsm_map_ch_SetReportingStateRes,
    &ett_gsm_map_ch_StatusReportArg,
    &ett_gsm_map_ch_EventReportData,
    &ett_gsm_map_ch_CallReportData,
    &ett_gsm_map_ch_StatusReportRes,
    &ett_gsm_map_ch_RemoteUserFreeArg,
    &ett_gsm_map_ch_RemoteUserFreeRes,
    &ett_gsm_map_ch_IST_AlertArg,
    &ett_gsm_map_ch_IST_AlertRes,
    &ett_gsm_map_ch_IST_CommandArg,
    &ett_gsm_map_ch_IST_CommandRes,
    &ett_gsm_map_ch_ReleaseResourcesArg,
    &ett_gsm_map_ch_ReleaseResourcesRes,

/* --- Module MAP-LCS-DataTypes --- --- ---                                   */

    &ett_gsm_map_lcs_RoutingInfoForLCS_Arg,
    &ett_gsm_map_lcs_RoutingInfoForLCS_Res,
    &ett_gsm_map_lcs_LCSLocationInfo,
    &ett_gsm_map_lcs_ProvideSubscriberLocation_Arg,
    &ett_gsm_map_lcs_LocationType,
    &ett_gsm_map_lcs_DeferredLocationEventType,
    &ett_gsm_map_lcs_LCS_ClientID,
    &ett_gsm_map_lcs_LCSClientName,
    &ett_gsm_map_lcs_LCSRequestorID,
    &ett_gsm_map_lcs_LCS_QoS,
    &ett_gsm_map_lcs_ResponseTime,
    &ett_gsm_map_lcs_SupportedGADShapes,
    &ett_gsm_map_lcs_LCSCodeword,
    &ett_gsm_map_lcs_LCS_PrivacyCheck,
    &ett_gsm_map_lcs_AreaEventInfo,
    &ett_gsm_map_lcs_AreaDefinition,
    &ett_gsm_map_lcs_AreaList,
    &ett_gsm_map_lcs_Area,
    &ett_gsm_map_lcs_PeriodicLDRInfo,
    &ett_gsm_map_lcs_ReportingPLMNList,
    &ett_gsm_map_lcs_PLMNList,
    &ett_gsm_map_lcs_ReportingPLMN,
    &ett_gsm_map_lcs_ProvideSubscriberLocation_Res,
    &ett_gsm_map_lcs_SubscriberLocationReport_Arg,
    &ett_gsm_map_lcs_Deferredmt_lrData,
    &ett_gsm_map_lcs_ServingNodeAddress,
    &ett_gsm_map_lcs_SubscriberLocationReport_Res,

/* --- Module MAP-GR-DataTypes --- --- ---                                    */

    &ett_gsm_map_gr_PrepareGroupCallArg,
    &ett_gsm_map_gr_PrepareGroupCallRes,
    &ett_gsm_map_gr_SendGroupCallEndSignalArg,
    &ett_gsm_map_gr_SendGroupCallEndSignalRes,
    &ett_gsm_map_gr_ForwardGroupCallSignallingArg,
    &ett_gsm_map_gr_ProcessGroupCallSignallingArg,
    &ett_gsm_map_gr_StateAttributes,
    &ett_gsm_map_gr_SendGroupCallInfoArg,
    &ett_gsm_map_gr_SendGroupCallInfoRes,

/* --- Module MAP-DialogueInformation --- --- ---                             */

    &ett_gsm_map_dialogue_MAP_DialoguePDU,
    &ett_gsm_map_dialogue_MAP_OpenInfo,
    &ett_gsm_map_dialogue_MAP_AcceptInfo,
    &ett_gsm_map_dialogue_MAP_CloseInfo,
    &ett_gsm_map_dialogue_MAP_RefuseInfo,
    &ett_gsm_map_dialogue_MAP_UserAbortInfo,
    &ett_gsm_map_dialogue_MAP_UserAbortChoice,
    &ett_gsm_map_dialogue_MAP_ProviderAbortInfo,

/* --- Module MAP-LocationServiceOperations --- --- ---                       */


/* --- Module MAP-Group-Call-Operations --- --- ---                           */


/* --- Module MAP-ShortMessageServiceOperations --- --- ---                   */


/* --- Module MAP-SupplementaryServiceOperations --- --- ---                  */


/* --- Module MAP-CallHandlingOperations --- --- ---                          */


/* --- Module MAP-OperationAndMaintenanceOperations --- --- ---               */


/* --- Module MAP-MobileServiceOperations --- --- ---                         */


/* --- Module MAP-Errors --- --- ---                                          */


/* --- Module MAP-Protocol --- --- ---                                        */


/* --- Module DummyMAP --- --- ---                                            */

    &ett_gsm_old_Component,
    &ett_gsm_old_Invoke,
    &ett_gsm_old_ReturnResult,
    &ett_gsm_old_T_resultretres,
    &ett_gsm_old_ReturnError,
    &ett_gsm_old_Reject,
    &ett_gsm_old_T_invokeIDRej,
    &ett_gsm_old_T_problem,
    &ett_gsm_old_MAP_OPERATION,
    &ett_gsm_old_MAP_ERROR,
    &ett_gsm_old_Bss_APDU,
    &ett_gsm_old_ProvideSIWFSNumberArg,
    &ett_gsm_old_ProvideSIWFSNumberRes,
    &ett_gsm_old_PurgeMSArgV2,
    &ett_gsm_old_PrepareHO_ArgOld,
    &ett_gsm_old_PrepareHO_ResOld,
    &ett_gsm_old_SendAuthenticationInfoResOld,
    &ett_gsm_old_SendAuthenticationInfoResOld_item,
    &ett_gsm_old_SendIdentificationResV2,
    &ett_gsm_old_TripletListold,
    &ett_gsm_old_AuthenticationTriplet_v2,
    &ett_gsm_old_SIWFSSignallingModifyArg,
    &ett_gsm_old_SIWFSSignallingModifyRes,
    &ett_gsm_old_SecureTransportArg,
    &ett_gsm_old_SecureTransportErrorParam,
    &ett_gsm_old_SecureTransportRes,
    &ett_gsm_old_SecurityHeader,
    &ett_gsm_old_OriginalComponentIdentifier,
    &ett_gsm_old_OperationCode,
    &ett_gsm_old_ErrorCode,
    &ett_gsm_old_PlmnContainer_U,
    &ett_gsm_old_T_operatorSS_Code,
    &ett_gsm_old_ForwardSM_Arg,
    &ett_gsm_old_SM_RP_DAold,
    &ett_gsm_old_SM_RP_OAold,
    &ett_gsm_old_SendRoutingInfoArgV2,
    &ett_gsm_old_SendRoutingInfoResV2,
    &ett_gsm_old_BeginSubscriberActivityArg,

/* --- Module SS-DataTypes --- --- ---                                        */

    &ett_gsm_ss_NotifySS_Arg,
    &ett_gsm_ss_ForwardChargeAdviceArg,
    &ett_gsm_ss_ChargingInformation,
    &ett_gsm_ss_ForwardCUG_InfoArg,
    &ett_gsm_ss_ECT_Indicator,
    &ett_gsm_ss_NameIndicator,
    &ett_gsm_ss_Name,
    &ett_gsm_ss_NameSet,
    &ett_gsm_ss_RDN,
    &ett_gsm_ss_RemotePartyNumber,
    &ett_gsm_ss_AccessRegisterCCEntryArg,
    &ett_gsm_ss_CallDeflectionArg,
    &ett_gsm_ss_UserUserServiceArg,
    &ett_gsm_ss_LocationNotificationArg,
    &ett_gsm_ss_LocationNotificationRes,
    &ett_gsm_ss_LCS_MOLRArg,
    &ett_gsm_ss_MultiplePositioningProtocolPDUs,
    &ett_gsm_ss_LCS_MOLRRes,
    &ett_gsm_ss_LCS_AreaEventRequestArg,
    &ett_gsm_ss_LCS_AreaEventReportArg,
    &ett_gsm_ss_LCS_AreaEventCancellationArg,
    &ett_gsm_ss_LCS_PeriodicLocationRequestArg,
    &ett_gsm_ss_LCS_PeriodicLocationRequestRes,
    &ett_gsm_ss_LCS_LocationUpdateArg,
    &ett_gsm_ss_LCS_LocationUpdateRes,
    &ett_gsm_ss_LCS_PeriodicLocationCancellationArg,

/* --- Module SS-Operations --- --- ---                                       */


/*--- End of included file: packet-gsm_map-ettarr.c ---*/
#line 2493 "../../asn1/gsm_map/packet-gsm_map-template.c"
  };

  /* Register protocol */
  proto_gsm_map_dialogue =proto_gsm_map = proto_register_protocol(PNAME, PSNAME, PFNAME);

  register_dissector("gsm_map", dissect_gsm_map, proto_gsm_map);

  /* Register fields and subtrees */
  proto_register_field_array(proto_gsm_map, hf, array_length(hf));
  proto_register_subtree_array(ett, array_length(ett));

  sms_dissector_table = register_dissector_table("gsm_map.sms_tpdu",
						 "GSM SMS TPDU", FT_UINT8,
						 BASE_DEC);

  gsm_map_tap = register_tap("gsm_map");


/*--- Included file: packet-gsm_map-dis-tab.c ---*/
#line 1 "../../asn1/gsm_map/packet-gsm_map-dis-tab.c"

/* --- Module MAP-DialogueInformation --- --- ---                             */

  register_ber_oid_dissector("0.4.0.0.1.1.1.1", dissect_gsm_map_dialogue_MAP_DialoguePDU_PDU, proto_gsm_map_dialogue, "map-DialogueAS");


/* --- Module MAP-LocationServiceOperations --- --- ---                       */



/* --- Module MAP-Group-Call-Operations --- --- ---                           */



/* --- Module MAP-ShortMessageServiceOperations --- --- ---                   */



/* --- Module MAP-SupplementaryServiceOperations --- --- ---                  */



/* --- Module MAP-CallHandlingOperations --- --- ---                          */



/* --- Module MAP-OperationAndMaintenanceOperations --- --- ---               */



/* --- Module MAP-MobileServiceOperations --- --- ---                         */



/* --- Module MAP-Errors --- --- ---                                          */



/* --- Module MAP-Protocol --- --- ---                                        */



/* --- Module DummyMAP --- --- ---                                            */



/* --- Module SS-DataTypes --- --- ---                                        */



/* --- Module SS-Operations --- --- ---                                       */



/*--- End of included file: packet-gsm_map-dis-tab.c ---*/
#line 2511 "../../asn1/gsm_map/packet-gsm_map-template.c"
  oid_add_from_string("ericsson-gsm-Map-Ext","1.2.826.0.1249.58.1.0" );
  oid_add_from_string("accessTypeNotAllowed-id","1.3.12.2.1107.3.66.1.2");
  /*oid_add_from_string("map-ac networkLocUp(1) version3(3)","0.4.0.0.1.0.1.3" );
   *
   * Register our configuration options, particularly our ssn:s
   * Set default SSNs
   */
  range_convert_str(&global_ssn_range, "6-9", MAX_SSN);

  gsm_map_module = prefs_register_protocol(proto_gsm_map, proto_reg_handoff_gsm_map);

  prefs_register_range_preference(gsm_map_module, "tcap.ssn", "TCAP SSNs",
				  "TCAP Subsystem numbers used for GSM MAP",
				  &global_ssn_range, MAX_SSN);
}
